name: Release Please
on:
push:
branches:
- main
permissions:
contents: write
issues: write
pull-requests: write
concurrency:
group: release-please
cancel-in-progress: false
jobs:
verify:
name: Verify release inputs
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
RUSTDOCFLAGS: -D warnings
PKG_CONFIG_PATH: /usr/lib/pkgconfig
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt, clippy
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y alsa pkg-config libasound2-dev
- name: Verify Cargo.lock is up to date
run: cargo metadata --locked --format-version 1 > /dev/null
- name: Format
run: cargo fmt --check --all
- name: Lint
run: cargo clippy --all-targets --all-features --locked -- -D warnings
- name: Test
run: cargo test --all --all-features --locked
- name: Build documentation
run: cargo doc --workspace --all-features --locked
- name: Verify package
run: cargo package --locked --no-verify
release-please:
runs-on: ubuntu-latest
needs: verify
outputs:
release_created: ${{ steps.release.outputs.release_created }}
release_sha: ${{ steps.release.outputs.sha }}
steps:
- name: Create release
id: release
uses: googleapis/release-please-action@v5
with:
config-file: .github/release-please-config.json
manifest-file: .github/.release-please-manifest.json
target-branch: ${{ github.ref_name }}
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
needs: release-please
if: ${{ needs.release-please.outputs.release_created }}
permissions:
actions: write
contents: read
env:
RUSTFLAGS: -D warnings
PKG_CONFIG_PATH: /usr/lib/pkgconfig
steps:
- uses: actions/checkout@v5
with:
ref: ${{ needs.release-please.outputs.release_sha }}
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y alsa pkg-config libasound2-dev
- name: Lint release commit
run: cargo clippy --all-targets --all-features --locked -- -D warnings
- name: Test release commit
run: cargo test --all --all-features --locked
- name: Publish crate
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo publish --locked
- name: Refresh Context7 documentation
env:
GH_TOKEN: ${{ github.token }}
run: gh workflow run context7.yml