name: Release
on:
push:
tags: ["*"]
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 - uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 with:
toolchain: stable
- name: Check tag matches Cargo.toml version
run: |
version="$(cargo pkgid | sed 's/.*[@#]//')"
tag="${GITHUB_REF_NAME#v}"
if [ "$version" != "$tag" ]; then
echo "Tag v$tag does not match Cargo.toml version $version" >&2
exit 1
fi
- name: Test
run: cargo test
- name: Publish
run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}