name: Push to master run-name: ${{ github.ref_name }} push run 🚀 on: push: branches: - master - main - 'release/**' tags: - '*' permissions: contents: write concurrency: group: '${{ github.workflow }} @ ${{ github.ref }}' cancel-in-progress: ${{ github.ref_type == 'tag' }} jobs: check-format: name: Check Formatting 🔍 if: github.ref_name == 'master' uses: ./.github/workflows/check-format.yaml permissions: contents: read build-project: name: Build Project 🧱 uses: ./.github/workflows/build-project.yaml secrets: inherit permissions: contents: read create-release: name: Create Release 🛫 if: github.ref_type == 'tag' runs-on: ubuntu-22.04 needs: build-project defaults: run: shell: bash steps: - name: Check Release Tag ☑️ id: check run: | : Check Release Tag ☑️ if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi shopt -s extglob case "${GITHUB_REF_NAME}" in +([0-9]).+([0-9]).+([0-9]) ) echo 'validTag=true' >> $GITHUB_OUTPUT echo 'prerelease=false' >> $GITHUB_OUTPUT echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT ;; +([0-9]).+([0-9]).+([0-9])-@(beta|rc)*([0-9]) ) echo 'validTag=true' >> $GITHUB_OUTPUT echo 'prerelease=true' >> $GITHUB_OUTPUT echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT ;; *) echo 'validTag=false' >> $GITHUB_OUTPUT ;; esac - name: Download Build Artifacts 📥 uses: actions/download-artifact@v4 if: fromJSON(steps.check.outputs.validTag) id: download - name: Rename Files 🏷️ if: fromJSON(steps.check.outputs.validTag) run: | : Rename Files 🏷️ if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi shopt -s extglob shopt -s nullglob root_dir="$(pwd)" commit_hash="${GITHUB_SHA:0:9}" variants=( 'windows-x64-cpu;zip|exe' 'windows-x64-hipblas;zip|exe' 'windows-x64-vulkan;zip|exe' 'windows-x64-cuda;zip|exe' 'macos-arm64;tar.xz|pkg' 'macos-x86_64;tar.xz|pkg' 'ubuntu-22.04-x86_64;tar.xz|deb|ddeb' 'sources;tar.xz' ) for variant_data in "${variants[@]}"; do IFS=';' read -r variant suffix <<< "${variant_data}" candidates=(*-${variant}-${commit_hash}/@(*|*-dbgsym).@(${suffix})) for candidate in "${candidates[@]}"; do mv "${candidate}" "${root_dir}" done done - name: Generate Checksums 🪪 if: fromJSON(steps.check.outputs.validTag) run: | : Generate Checksums 🪪 if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi shopt -s extglob echo "### Checksums" > ${{ github.workspace }}/CHECKSUMS.txt for file in ${{ github.workspace }}/@(*.exe|*.deb|*.ddeb|*.pkg|*.tar.xz|*.zip); do echo " ${file##*/}: $(sha256sum "${file}" | cut -d " " -f 1)" >> ${{ github.workspace }}/CHECKSUMS.txt done - name: Create Release 🛫 if: fromJSON(steps.check.outputs.validTag) id: create_release uses: softprops/action-gh-release@d4e8205d7e959a9107da6396278b2f1f07af0f9b with: draft: true prerelease: ${{ fromJSON(steps.check.outputs.prerelease) }} tag_name: ${{ steps.check.outputs.version }} name: ${{ needs.build-project.outputs.pluginName }} ${{ steps.check.outputs.version }} body_path: ${{ github.workspace }}/CHECKSUMS.txt files: | ${{ github.workspace }}/*.exe ${{ github.workspace }}/*.zip ${{ github.workspace }}/*.pkg ${{ github.workspace }}/*.deb ${{ github.workspace }}/*.ddeb ${{ github.workspace }}/*.tar.xz