From 2889cfff4c2bd4d630f6dc35600f79322a1aaab6 Mon Sep 17 00:00:00 2001 From: Diggory Hardy Date: Wed, 15 Oct 2025 18:42:24 +0100 Subject: [PATCH 1/4] Add release.yml CI action --- .github/workflows/release.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..da0e41db --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,19 @@ +# Source: https://crates.io/docs/trusted-publishing +name: Publish to crates.io +on: + push: + tags: ['v*'] + +jobs: + publish: + runs-on: ubuntu-latest + environment: release # Optional: for enhanced security + permissions: + id-token: write # Required for OIDC token exchange + steps: + - uses: actions/checkout@v5 + - uses: rust-lang/crates-io-auth-action@v1 + id: auth + - run: cargo publish + env: + CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} From 990f1a5b69e1f9bf037a7609f24e10bac8b984ea Mon Sep 17 00:00:00 2001 From: Diggory Hardy Date: Wed, 15 Oct 2025 19:31:33 +0100 Subject: [PATCH 2/4] Add hack to grab release notes from CHANGELOG --- .github/workflows/release.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index da0e41db..7e1bd0b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,3 +17,25 @@ jobs: - run: cargo publish env: CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} + + # Source: https://medium.com/@usman_qb + - name: Create release body + id: create_release_body + run: | + RELEASEVERSION="[${{ '[' + github.ref_name.slice(1) + ']' }}]" + echo "Version: $RELEASEVERSION" + RELEASEBODY=$(awk -v ver="$RELEASEVERSION" '/^## / { if (p) { exit }; if ($2 == ver) { p=1; next } } p && NF' CHANGELOG.md) + { + echo 'RELEASEBODY<> $GITHUB_OUTPUT + + - name: Create Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + echo "Creating release for ${{ github.ref_name }}" + echo "${{ steps.create_release_body.outputs.RELEASEBODY }}" + gh release create "${{ github.ref_name }}" --title "release_${{ github.ref_name }}" --notes "${{ steps.create_release_body.outputs.RELEASEBODY }}" + echo "Release created successfully" From 2eb2c00dd8b14d9b0c2331ad7d37d92be792af20 Mon Sep 17 00:00:00 2001 From: Diggory Hardy Date: Wed, 22 Oct 2025 09:07:09 +0100 Subject: [PATCH 3/4] Create draft release only --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e1bd0b7..842b01a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,5 +37,5 @@ jobs: run: | echo "Creating release for ${{ github.ref_name }}" echo "${{ steps.create_release_body.outputs.RELEASEBODY }}" - gh release create "${{ github.ref_name }}" --title "release_${{ github.ref_name }}" --notes "${{ steps.create_release_body.outputs.RELEASEBODY }}" + gh release create "${{ github.ref_name }}" --draft --title "release_${{ github.ref_name }}" --notes "${{ steps.create_release_body.outputs.RELEASEBODY }}" echo "Release created successfully" From 8aca28dfdd8487d2f44f87c20a500b07a5cad91f Mon Sep 17 00:00:00 2001 From: Diggory Hardy Date: Fri, 31 Oct 2025 08:07:37 +0000 Subject: [PATCH 4/4] Fix: do not double-wrap with brackets --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 842b01a3..8c586bde 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,7 @@ jobs: - name: Create release body id: create_release_body run: | - RELEASEVERSION="[${{ '[' + github.ref_name.slice(1) + ']' }}]" + RELEASEVERSION="[${{ github.ref_name.slice(1) }}]" echo "Version: $RELEASEVERSION" RELEASEBODY=$(awk -v ver="$RELEASEVERSION" '/^## / { if (p) { exit }; if ($2 == ver) { p=1; next } } p && NF' CHANGELOG.md) {