name: Release
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Check Cargo.toml version matches the tag
run: |
version=$(sed -nE 's/^version = "(.*)"$/\1/p' Cargo.toml | head -1)
test "v$version" = "$GITHUB_REF_NAME" || { echo "Cargo.toml is $version, tag is $GITHUB_REF_NAME"; exit 1; }
- uses: dtolnay/rust-toolchain@stable
- uses: mlugg/setup-zig@v2
- run: cargo install --locked cargo-zigbuild
- uses: goreleaser/goreleaser-action@v7
with:
version: "~> v2"
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }}
- run: cargo publish --locked
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}