From 04a0ecd1e1702229c146163edb1ed1502baa889c Mon Sep 17 00:00:00 2001 From: ChanTsune <41658782+ChanTsune@users.noreply.github.com> Date: Mon, 17 Nov 2025 17:45:30 +0900 Subject: [PATCH 1/3] :wrench: Create release.toml --- release.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 release.toml diff --git a/release.toml b/release.toml new file mode 100644 index 000000000..fd7c073bd --- /dev/null +++ b/release.toml @@ -0,0 +1,2 @@ +tag-name = "{{crate_name}}-{{version}}" +pre-release-commit-message = ":bookmark: Bump {{crate_name}} version to {{version}}" From b14da6244d316013759645062ad23c673f020f88 Mon Sep 17 00:00:00 2001 From: ChanTsune <41658782+ChanTsune@users.noreply.github.com> Date: Mon, 17 Nov 2025 17:53:30 +0900 Subject: [PATCH 2/3] :construction_worker: Create release-prep.yml --- .github/workflows/release-prep.yml | 117 +++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 .github/workflows/release-prep.yml diff --git a/.github/workflows/release-prep.yml b/.github/workflows/release-prep.yml new file mode 100644 index 000000000..01e831b03 --- /dev/null +++ b/.github/workflows/release-prep.yml @@ -0,0 +1,117 @@ +name: release-prep + +on: + workflow_dispatch: + inputs: + crate: + description: "Target crate to bump (exclude fuzz)" + required: true + type: choice + options: + - all + - portable-network-archive + - pna + - libpna + default: portable-network-archive + level: + description: "Version level" + required: true + type: choice + options: [major, minor, patch] + default: patch + dependent_version: + description: "Update dependent versions?" + required: true + type: choice + options: + - fix # Upgrade only when previous requirement no longer matches + - upgrade # Always upgrade dependents + default: fix + +permissions: + contents: write + pull-requests: write + +jobs: + prepare: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust toolchain + uses: actions-rust-lang/setup-rust-toolchain@1780873c7b576612439a134613cc4cc74ce5538c # v1.15.2 + with: + toolchain: stable + + - uses: cargo-bins/cargo-binstall@a66119fbb1c952daba62640c2609111fe0803621 # v1.15.7 + + - name: Install cargo-release + run: cargo binstall cargo-release --no-confirm --force + + - name: Compute next version and build temp release config + id: prep + shell: bash + run: | + set -euo pipefail + CRATE="${{ inputs.crate }}" + LEVEL="${{ inputs.level }}" + + CONFIG=/tmp/release-config.toml + + if [ "$LEVEL" = "patch" ]; then + COMMIT_MSG=':bookmark: Bump {{crate_name}} version to {{version}}' + else + COMMIT_MSG=':bookmark: Bump version to {{version}}' + fi + + printf 'pre-release-commit-message = "%s"\n' "$COMMIT_MSG" > "$CONFIG" + echo "config=$CONFIG" >> "$GITHUB_OUTPUT" + + - name: Run cargo release (no tag/push) + env: + CARGO_TERM_COLOR: always + run: | + set -euo pipefail + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + CRATE="${{ inputs.crate }}" + DEP_FLAG="--dependent-version ${{ inputs.dependent_version }}" + EXCLUDES="--exclude portable-network-archive-fuzz" + if [ "$CRATE" = "all" ]; then + PKG_FLAG="" + else + PKG_FLAG="-p $CRATE" + fi + + cargo release \ + ${{ inputs.level }} \ + $PKG_FLAG \ + --no-publish \ + --no-push \ + --no-tag \ + --execute \ + --no-confirm \ + $EXCLUDES \ + $DEP_FLAG \ + --config "${{ steps.prep.outputs.config }}" + + - name: Set PR branch name + id: branch + run: | + BRANCH="release/${{ inputs.crate }}/${{ inputs.level }}-${{ steps.prep.outputs.new_version }}" + echo "name=$BRANCH" >> "$GITHUB_OUTPUT" + + - name: Create draft PR + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ steps.branch.outputs.name }} + title: "chore: prepare release ${{ inputs.crate }} ${{ steps.prep.outputs.new_version }}" + body: | + Draft: release prep for `${{ inputs.crate }}` (${{ inputs.level }}). + - Version set to ${{ steps.prep.outputs.new_version }} + - Dependent versions: ${{ inputs.dependent_version }} + - No tags or publishes; cargo-release performed pre-replacements. + draft: true + commit-message: "chore: prepare release ${{ inputs.crate }} ${{ steps.prep.outputs.new_version }}" From 28025a13af227203fcf70198c6bf03efd486e169 Mon Sep 17 00:00:00 2001 From: ChanTsune <41658782+ChanTsune@users.noreply.github.com> Date: Thu, 20 Nov 2025 08:28:20 +0900 Subject: [PATCH 3/3] :construction_worker: use forked cargo-release https://github.com/crate-ci/cargo-release/issues/917 --- .github/workflows/release-prep.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/release-prep.yml b/.github/workflows/release-prep.yml index 01e831b03..494416262 100644 --- a/.github/workflows/release-prep.yml +++ b/.github/workflows/release-prep.yml @@ -44,10 +44,8 @@ jobs: with: toolchain: stable - - uses: cargo-bins/cargo-binstall@a66119fbb1c952daba62640c2609111fe0803621 # v1.15.7 - - name: Install cargo-release - run: cargo binstall cargo-release --no-confirm --force + run: cargo install -f --git https://github.com/ChanTsune/cargo-release --branch workspace-enable-template-render-when-single-crate - name: Compute next version and build temp release config id: prep