name: release
on:
push:
tags:
- "v*.*.*"
permissions: {}
jobs:
build:
uses: ./.github/workflows/build.yml
test:
uses: ./.github/workflows/test.yml
lint:
uses: ./.github/workflows/lint.yml
fuzz:
uses: ./.github/workflows/fuzz.yml
check_version:
needs: [build, test, lint, fuzz]
runs-on: ubuntu-latest
env:
REF_NAME: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Check crate version
run: '[[ "v$(yq ''.package.version'' Cargo.toml)" == "$REF_NAME" ]]'
github_release:
needs: [build, test, lint, fuzz, check_version]
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Create GitHub release
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda
with:
generate_release_notes: true
publish_crate:
needs: [build, test, lint, fuzz, github_release]
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
runs-on: ubuntu-latest
container:
image: rust:latest
steps:
- name: ensure node is installed for act
if: ${{ env.ACT }}
run: command -v node || (apt update && apt install -y nodejs)
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Publish libtlafmt crate
if: ${{ env.CARGO_REGISTRY_TOKEN != '' }}
run: cargo publish -p libtlafmt
- name: Publish tlafmt binary
if: ${{ env.CARGO_REGISTRY_TOKEN != '' }}
run: cargo publish -p tlafmt