permissions: contents: write name: Release on: release: types: [published] workflow_dispatch: jobs: release-common: runs-on: ubuntu-latest name: Release Common steps: - name: 🧰 Checkout uses: actions/checkout@v3 with: path: ImHex submodules: recursive - name: 📜 Verify version and set version variable run: | project_version=`cat ImHex/VERSION` tag_version="${{github.event.release.tag_name}}" tag_version="${tag_version:1}" if [ "$project_version" != "$tag_version" ]; then echo "::warning::$project_version and $tag_version are not the same ! Refusing to populate release" exit 1 fi echo "IMHEX_VERSION=$project_version" >> $GITHUB_ENV - name: 🗜️ Create tarball from sources with dependencies run: tar --exclude-vcs -czvf Full.Sources.tar.gz ImHex - name: ⬇️ Download artifacts from latest workflow uses: dawidd6/action-download-artifact@v2 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml branch: ${{ github.event.release.target_commitish }} workflow_conclusion: success skip_unpack: true - name: 🗜️ Unzip files when needed run: | for zipfile in ./*.zip do if [ `zipinfo -1 "$zipfile" | wc -l` -eq 1 ]; then echo "unzipping $zipfile" unzip "$zipfile" rm "$zipfile" else echo "keeping $zipfile zipped" fi done - name: 🟩 Rename artifacts when needed run: | mv "Windows Portable.zip" imhex-${{env.IMHEX_VERSION}}-Windows-Portable.zip mv "Windows Portable NoGPU.zip" imhex-${{env.IMHEX_VERSION}}-Windows-Portable-NoGPU.zip - name: ⬆️ Upload everything to release uses: softprops/action-gh-release@v1 with: files: '*' - name: ✒️ Prepare PKGBUILD run: | cp ImHex/dist/Arch/PKGBUILD . hash=`md5sum imhex-${{env.IMHEX_VERSION}}-ArchLinux.pkg.tar.zst | cut -d ' ' -f 1` sed -i 's/%version%/${{env.IMHEX_VERSION}}/g' PKGBUILD sed -i "s/(SKIP)/($hash)/g" PKGBUILD - name: ⬆️ Publish AUR package # I couldn't make the condition in the env directly for some reason env: AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }} if: "${{ env.AUR_SSH_PRIVATE_KEY != '' }}" uses: KSXGitHub/github-actions-deploy-aur@v2 with: pkgname: imhex-bin pkgbuild: ./PKGBUILD commit_username: iTrooz commit_email: itrooz@protonmail.com ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} commit_message: Bump to version ${{env.IMHEX_VERSION}} ssh_keyscan_types: rsa,dsa,ecdsa,ed25519 - name: 🎫 Create PatternLanguage release uses: ncipollo/release-action@v1 env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} if: "${{ env.RELEASE_TOKEN != '' }}" with: tag: ImHex-v${{env.IMHEX_VERSION}} repo: PatternLanguage token: ${{ secrets.RELEASE_TOKEN }} - name: 🎫 Create ImHex-Patterns release uses: ncipollo/release-action@v1 env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} if: "${{ env.RELEASE_TOKEN != '' }}" with: tag: ImHex-v${{env.IMHEX_VERSION}} repo: ImHex-Patterns token: ${{ secrets.RELEASE_TOKEN }} - name: ✉️ Update C++ Plugin Template uses: mvasigh/dispatch-action@main env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} if: "${{ env.RELEASE_TOKEN != '' }}" with: token: ${{ secrets.RELEASE_TOKEN }} repo: ImHex-Cpp-Plugin-Template owner: WerWolv event_type: update_submodule - name: ✉️ Update Rust Plugin Template uses: mvasigh/dispatch-action@main env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} if: "${{ env.RELEASE_TOKEN != '' }}" with: token: ${{ secrets.RELEASE_TOKEN }} repo: ImHex-Rust-Plugin-Template owner: WerWolv event_type: update_submodule release-windows: name: Release Windows needs: release-common runs-on: windows-2022 steps: - name: ⬇️ Download dependencies shell: pwsh run: | iwr https://github.com/microsoft/winget-create/releases/download/v1.1.2.0/wingetcreate.exe -OutFile wingetcreate.exe - name: ⬆️ Update winget manifest shell: pwsh env: WINGET_GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} if: "${{ env.WINGET_GITHUB_TOKEN != '' }}" run: | $tagname = $env:GITHUB_REF.Replace("refs/tags/", "") $version = $tagname.Replace("v", "") $url = "https://github.com/WerWolv/ImHex/releases/download/${tagname}/imhex-${version}-win64.msi" .\wingetcreate.exe update WerWolv.ImHex -u $url --version $version if ($version -notmatch "-") { .\wingetcreate.exe submit .\manifests\w\WerWolv\ImHex\${version}\ --token $env:WINGET_GITHUB_TOKEN }