name: Security Audit
on:
schedule:
- cron: "0 0 * * *"
push:
branches:
- main
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch }}
permissions: {}
jobs:
issue-reporting:
name: Audit (issue reporting)
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 - uses: actions-rust-lang/audit@72c09e02f132669d52284a3323acdb503cfc1a24
advisories:
name: Audit (advisories)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: dtolnay/rust-toolchain@02cb101ec7c40f2c49e1d9714d64511d8e1b74de with:
toolchain: stable
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 - run: mise run audit:advisories
shell: bash
policy:
name: Audit (bans, licenses, sources)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: dtolnay/rust-toolchain@02cb101ec7c40f2c49e1d9714d64511d8e1b74de with:
toolchain: stable
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 - run: mise run audit:policy
shell: bash
audit-complete:
needs:
- issue-reporting
- advisories
- policy
runs-on: ubuntu-latest
if: ${{ always() }}
steps:
- name: Audit complete
run: |
if [[ "${{ needs['policy'].result }}" == "success" ]]; then
echo "Audit succeeded"
else
echo "Audit failed"
exit 1
fi
shell: bash