name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
jobs:
format:
name: Check formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --check
lint:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Run clippy
run: cargo clippy -- -D warnings
test:
name: Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Run tests
run: cargo test --verbose
generate-credits:
name: Generate CREDITS.html
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install cargo-about
run: cargo install cargo-about --locked --features="cli"
- name: Generate CREDITS.html
run: cargo about generate about.hbs -o CREDITS.html
- name: Upload CREDITS.html
uses: actions/upload-artifact@v4
with:
name: CREDITS
path: CREDITS.html
retention-days: 30
- name: Commit CREDITS.html
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add CREDITS.html
git diff --staged --quiet || (git commit -m "chore: update CREDITS.html" && git push)