name: Release & Publish
on:
push:
tags:
- "*"
workflow_dispatch:
permissions: {}
jobs:
ensure-doc:
name: Ensure documentation builds
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 with:
persist-credentials: false
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 with:
toolchain: nightly
cache: false
- name: Install cargo-doc-rs
uses: taiki-e/install-action@25435dc8dd3baed7417e0c96d3fe89013a5b2e09 with:
tool: cargo-docs-rs
- run: cargo docs-rs
release:
runs-on: ubuntu-latest
needs: ensure-doc
name: Release
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 with:
persist-credentials: false
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 with:
cache: false
- name: Publish to crates.io
run: cargo publish --workspace --locked
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}