name: Publish Crate
on:
release:
types: [published]
workflow_dispatch:
jobs:
verify:
name: Verify Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy,rustfmt
- name: Verify formatting
run: cargo fmt --all -- --check
- name: Clippy
run: cargo clippy --workspace --all-targets --locked -- -D warnings
- name: Tests
run: cargo test --workspace --locked
- name: Package comtains_macros
run: cargo package --locked -p comtains_macros
- name: Package comtains
run: cargo package --locked
- name: Ensure clean workspace
run: git diff --stat --exit-code
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
needs: verify
environment: crates-io
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Publish comtains_macros
run: cargo publish --locked -p comtains_macros
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- name: Wait for index update
run: sleep 45
- name: Publish comtains
run: cargo publish --locked
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}