name: CI
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v21
- name: Setup Nix cache
uses: DeterminateSystems/magic-nix-cache-action@v13
with:
use-flakehub: false
- name: Build
run: nix develop --command cargo build --verbose
- name: Run tests
run: nix develop --command cargo test --verbose
fuzz:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v21
- name: Setup Nix cache
uses: DeterminateSystems/magic-nix-cache-action@v13
with:
use-flakehub: false
- name: Fuzz validate target
run: |
cd fuzz
nix develop --command cargo fuzz run validate -- -max_total_time=60
- name: Fuzz invariant target
run: |
cd fuzz
nix develop --command cargo fuzz run invariant -- -max_total_time=60
codegen:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v21
- name: Setup Nix cache
uses: DeterminateSystems/magic-nix-cache-action@v13
with:
use-flakehub: false
- name: Run codegen
run: |
cd codegen
nix develop .. --command cargo run
- name: Check for uncommitted changes
run: |
if ! git diff --quiet; then
echo "Error: Codegen produced changes that are not committed"
echo "Please run 'cd codegen && cargo run' and commit the changes"
git diff --stat
exit 1
fi
ci-success:
runs-on: ubuntu-latest
needs: [build-and-test, fuzz, codegen]
if: always()
steps:
- name: Check all jobs passed
run: |
if [[ "${{ needs.build-and-test.result }}" != "success" || "${{ needs.fuzz.result }}" != "success" || "${{ needs.codegen.result }}" != "success" ]]; then
echo "One or more jobs failed"
exit 1
fi
echo "All jobs passed"