ci: add CI + publish workflows, cargo-deny config (#1)

This commit is contained in:
2026-07-09 02:04:57 +02:00
committed by GitHub
parent 373b789afb
commit 405486d4b8
4 changed files with 232 additions and 214 deletions
+44
View File
@@ -0,0 +1,44 @@
name: CI
on:
push:
branches:
- master
pull_request:
types: [ opened, reopened, synchronize ]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: Format check
run: cargo fmt --all --check
- name: Lint
run: cargo clippy --all-targets -- -D warnings
- name: Audit dependencies
run: cargo deny check
- name: Check compiles
run: cargo check --all-targets
- name: Run tests
run: cargo test
- name: Check docs
run: cargo doc --no-deps
env:
RUSTDOCFLAGS: -D warnings
+42
View File
@@ -0,0 +1,42 @@
name: Publish
on:
release:
types: [ published ]
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
if: startsWith(github.event.release.tag_name, 'v')
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
- uses: dtolnay/rust-toolchain@stable
- name: Parse version from tag
run: |
TAG="${{ github.event.release.tag_name }}"
VERSION="${TAG#v}"
echo "TAG_VERSION=$VERSION" >> $GITHUB_ENV
- name: Check version matches Cargo.toml
run: |
CARGO_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')
if [ "$TAG_VERSION" != "$CARGO_VERSION" ]; then
echo "Tag v$TAG_VERSION does not match Cargo.toml version $CARGO_VERSION"
exit 1
fi
- name: Run tests
run: cargo test
- name: Dry run publish
run: cargo publish --dry-run
- name: Publish to crates.io
run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}