name: Publish release to crates.io
on:
push:
tags: ['v*']
permissions: {}
jobs:
test:
name: Run tests for release candidate
runs-on: ubuntu-latest
permissions: {}
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Build
run: cargo build --release
- name: Run tests
run: cargo test --release
publish:
name: Publish release
runs-on: ubuntu-latest
needs: [test]
permissions:
id-token: write steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Authenticate with crates.io
uses: rust-lang/crates-io-auth-action@c6f97d42243bad5fab37ca0427f495c86d5b1a18 id: auth
- name: Publish release
run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}