name: pipeline
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- name: build
run: cargo test --no-run --all-features
- name: test
run: cargo test --all-features -- --nocapture --quiet
- name: formatting
run: cargo fmt --all -- --check
- name: check
run: |
cargo check --all-features
cargo check
- name: clippy
run: |
cargo clippy --all-features -- -D warnings
cargo clippy -- -D warnings
cargo_publish:
if: startsWith(github.ref, 'refs/tags/v')
needs: check
name: Publish Cargo Package
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: rust-lang/crates-io-auth-action@v1
id: auth
- run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
body_path: CHANGELOG.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}