name: CI implementation
on:
workflow_call:
inputs:
trusted:
required: true
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
MBX_DISABLE: "1"
jobs:
ci:
runs-on: ${{ github.event_name == 'pull_request' && (github.event.pull_request.head.repo.full_name != github.repository || github.event.pull_request.user.login != 'jdx') && 'ubuntu-latest' || 'namespace-profile-endev-linux-amd64;overrides.cache-tag=cache' }}
timeout-minutes: 30
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 with:
shared-key: ci-rust
save-if: ${{ inputs.trusted && github.ref == 'refs/heads/main' }}
- run: rustup component add clippy rustfmt
- uses: taiki-e/install-action@c030abdc26abd91eb618a6c9d1963825f7ce5a90 - run: mise run render
- name: assert render produces no diff
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "::error::'mise run render' produced changes. Run it locally and commit."
git status
git diff HEAD
exit 1
fi
- run: mise run lint
- run: cargo test
- run: cargo audit
coverage:
runs-on: ${{ github.event_name == 'pull_request' && (github.event.pull_request.head.repo.full_name != github.repository || github.event.pull_request.user.login != 'jdx') && 'ubuntu-latest' || 'namespace-profile-endev-linux-amd64;overrides.cache-tag=cache' }}
timeout-minutes: 30
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 with:
save-if: ${{ inputs.trusted && github.ref == 'refs/heads/main' }}
- run: rustup component add llvm-tools-preview
- uses: taiki-e/install-action@4c7e9f3bb4ca35f54341be8fc8d3608f71e4d24e - run: cargo llvm-cov --codecov --output-path codecov.json
- uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f with:
files: codecov.json