From 203e3301143c763addb871610466dd1a3decde83 Mon Sep 17 00:00:00 2001 From: archae0pteryx Date: Tue, 19 May 2026 07:28:45 -0700 Subject: [PATCH 1/2] trigger release builds from GitHub releases --- .github/workflows/release.yml | 13 +++++++++---- README.md | 4 ++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b1d765..e8468d4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,9 @@ name: release +run-name: release ${{ github.event.release.tag_name || format('v{0}', inputs.version) || github.ref_name }} on: + release: + types: [published] workflow_dispatch: inputs: version: @@ -17,9 +20,6 @@ on: required: true default: false type: boolean - push: - tags: ["v*"] - permissions: contents: write id-token: write @@ -27,7 +27,7 @@ permissions: artifact-metadata: write concurrency: - group: release-${{ github.event_name == 'workflow_dispatch' && inputs.version || github.ref_name }} + group: release-${{ github.event.release.tag_name || inputs.version || github.ref_name }} cancel-in-progress: false jobs: @@ -51,6 +51,11 @@ jobs: tag="v${version}" draft="${{ inputs.draft }}" prerelease="${{ inputs.prerelease }}" + elif [[ "${{ github.event_name }}" == "release" ]]; then + tag="${{ github.event.release.tag_name }}" + version="${tag#v}" + draft="${{ github.event.release.draft }}" + prerelease="${{ github.event.release.prerelease }}" else tag="${GITHUB_REF_NAME}" version="${tag#v}" diff --git a/README.md b/README.md index 3b3654b..c8bc35b 100644 --- a/README.md +++ b/README.md @@ -78,8 +78,8 @@ task build # release .app + .dmg in src-tauri/target/release/bundle/ Release builds are created by `.github/workflows/release.yml`. -- Manual release: GitHub Actions → **release** → Run workflow → enter a SemVer version without `v`, for example `0.1.0`. Leave `draft` unchecked to publish it immediately, or check it for a private review pass. -- Tagged release: push a `v*` tag, for example `v0.1.0`. +- Normal release: create and publish a GitHub Release with a `v*` tag, for example `v0.1.0`. Publishing the release triggers the cross-platform build and attaches the packages back to that release. +- Manual repair path: GitHub Actions → **release** → Run workflow → enter a SemVer version without `v`, for example `0.1.0`. Leave `draft` unchecked to publish it immediately, or check it for a private review pass. - Packages built: macOS universal `.dmg`, Windows x64 NSIS installer, Windows ARM64 NSIS installer, Linux x64 `.AppImage`, and Linux x64 `.deb`. - `SHA256SUMS.txt` is attached to each release for package integrity checks, and GitHub provenance attestations are generated for the release packages. From b79da085711da58bf7248818e0b731e9875ff3e7 Mon Sep 17 00:00:00 2001 From: archae0pteryx Date: Tue, 19 May 2026 07:33:19 -0700 Subject: [PATCH 2/2] tighten release workflow permissions --- .github/workflows/release.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8468d4..3c3f4c7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,18 +21,16 @@ on: default: false type: boolean permissions: - contents: write - id-token: write - attestations: write - artifact-metadata: write + contents: read concurrency: - group: release-${{ github.event.release.tag_name || inputs.version || github.ref_name }} + group: release-${{ github.event.release.tag_name || format('v{0}', inputs.version) || github.ref_name }} cancel-in-progress: false jobs: prepare: runs-on: ubuntu-latest + permissions: {} outputs: version: ${{ steps.release.outputs.version }} tag: ${{ steps.release.outputs.tag }} @@ -83,6 +81,11 @@ jobs: name: ${{ matrix.label }} needs: prepare runs-on: ${{ matrix.runner }} + permissions: + contents: write + id-token: write + attestations: write + artifact-metadata: write strategy: fail-fast: false matrix: @@ -210,6 +213,8 @@ jobs: name: SHA256 checksums needs: [prepare, build] runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Download release assets env: