name: Release
on:
push:
tags:
- "v*"
env:
CARGO_TERM_COLOR: always
permissions:
contents: read
id-token: write
jobs:
publish:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref_name, '-')
environment:
name: publish
url: https://crates.io/crates/tzf-rs
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- name: Verify tag matches Cargo version
shell: bash
run: |
tag_version="${GITHUB_REF_NAME#v}"
cargo_version="$(cargo pkgid | sed -E 's/.*#//')"
if [ "${tag_version}" != "${cargo_version}" ]; then
echo "Tag version ${tag_version} does not match Cargo.toml version ${cargo_version}."
exit 1
fi
- name: Authenticate with crates.io
id: auth
uses: rust-lang/crates-io-auth-action@v1
- name: Publish crate
run: cargo publish --locked
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}