name: Rust Release
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
on:
push:
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Cache Cargo Registry
uses: actions/cache@v5
with:
path: ~/.cargo/registry
key: ubuntu-latest-cargo-registry-${{ hashFiles('**/Cargo.toml') }}
- name: Release to GitHub
uses: softprops/action-gh-release@v2
- name: Authenticate with crates.io
id: auth
uses: rust-lang/crates-io-auth-action@v1
- name: Publish to crates.io
run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}