From 415f950ad322b3a1c5b06a7018c5f9b881592b34 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Wed, 8 Oct 2025 16:21:31 +0100 Subject: [PATCH] Publish a release if the git tag exactly matches the current version number --- .github/workflows/build.yml | 65 +++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6535741a..eced2c57 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -198,3 +198,68 @@ jobs: run: | cmake -S . -B build -G Ninja -DUSE_INTERNAL_LIBS=OFF -DCMAKE_BUILD_TYPE=Release cmake --build build + + check-is-release: + if: github.event_name != 'pull_request' + name: Check For Release Tag + runs-on: ubuntu-latest + needs: version + outputs: + is-release: ${{ steps.is-release-test.outputs.result }} + steps: + - uses: actions/checkout@v4 + - name: Check Release Tag + id: is-release-test + run: | + GIT_TAG=$(git describe --exact-match --tags || true) + if [[ -z "${GIT_TAG}" || "${{ github.ref_type }}" != 'tag' ]] + then + echo "Not tagged" + echo "result=false" >> $GITHUB_OUTPUT + else + echo "GIT_TAG: ${GIT_TAG}"" + echo "needs.version.outputs.version: ${{ needs.version.outputs.version }}"" + if [[ "${GIT_TAG}" = "${{ needs.version.outputs.version }}" ]] + then + echo "'${GIT_TAG}' is a release" + echo "result=true" >> $GITHUB_OUTPUT + else + echo "'${GIT_TAG}' is not a release" + echo "result=false" >> $GITHUB_OUTPUT + fi + fi + + release: + name: Release + if: github.event_name != 'pull_request' && needs.check-is-release.outputs.is-release == 'true' + runs-on: ubuntu-latest + needs: + - version + - check-is-release + - windows-msvc + - macos + - linux + - emscripten + steps: + - uses: actions/download-artifact@v4 + - name: Prepare Release Artifacts + run: | + mkdir release-artifacts + mv ${{ github.event.repository.name }}-linux-${{ needs.version.outputs.version }}/${{ github.event.repository.name }}-${{ needs.version.outputs.version }}.deb \ + release-artifacts + zip -r9 release-artifacts/${{ github.event.repository.name }}-linux-${{ needs.version.outputs.version }}.zip \ + ${{ github.event.repository.name }}-linux-${{ needs.version.outputs.version }} + mv ${{ github.event.repository.name }}-windows-msvc-${{ needs.version.outputs.version }}/${{ github.event.repository.name }}-${{ needs.version.outputs.version }}.exe \ + release-artifacts + mv ${{ github.event.repository.name }}-macOS-${{ needs.version.outputs.version }}/${{ github.event.repository.name }}-${{ needs.version.outputs.version }}.dmg \ + release-artifacts + zip -r9 release-artifacts/${{ github.event.repository.name }}-emscripten-${{ needs.version.outputs.version }}.zip \ + ${{ github.event.repository.name }}-emscripten-${{ needs.version.outputs.version }} + - name: Publish Release Artifacts + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ github.ref }} + name: Release ${{ needs.version.outputs.version }} + files: release-artifacts/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}