name: Release Publish Automation
on:
workflow_dispatch:
inputs:
post-initial-release:
description: Confirm the initial manual crates.io release is complete and rustuse already exists on crates.io
required: true
type: boolean
permissions:
contents: write
pull-requests: read
id-token: write
concurrency:
group: release-plz-release
cancel-in-progress: false
jobs:
release-plz-release:
name: Release-plz Release
if: ${{ !github.event.repository.fork && inputs.post-initial-release }}
runs-on: ubuntu-latest
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: 1.95.0
rustflags: ""
cache-workspaces: |
. -> target
- name: Check publish token
shell: bash
run: |
if [ -z "$CARGO_REGISTRY_TOKEN" ]; then
echo "CARGO_REGISTRY_TOKEN is required for release-plz publish." >&2
exit 1
fi
- name: Confirm published crate already exists on crates.io
shell: bash
run: |
curl --fail --silent --show-error "https://crates.io/api/v1/crates/rustuse" > /dev/null
- name: Run release-plz release
uses: release-plz/action@v0.5
with:
command: release
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}