name: Release
on:
workflow_run:
workflows: [CI]
branches: [main]
types: [completed]
jobs:
release:
name: Publish release
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: read
steps:
- &checkout
name: Checkout tested main commit
uses: actions/checkout@v6
with:
ref: main
fetch-depth: 0
persist-credentials: false
- &verify-tested-commit
name: Verify tested commit
env:
EXPECTED_SHA: ${{ github.event.workflow_run.head_sha }}
run: |
actual_sha="$(git rev-parse HEAD)"
if [[ "$actual_sha" != "$EXPECTED_SHA" ]]; then
echo "::error::main moved after CI: expected $EXPECTED_SHA, checked out $actual_sha"
exit 1
fi
- &rust-toolchain
name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Publish unpublished crate version
uses: release-plz/action@v0.5
with:
command: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
release-pr:
name: Prepare next release
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
concurrency:
group: release-plz-main
cancel-in-progress: false
steps:
- *checkout
- *verify-tested-commit
- *rust-toolchain
- name: Create or update release PR
uses: release-plz/action@v0.5
with:
command: release-pr
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}