name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest container: rust:latest steps: - uses: actions/checkout@v4 - name: Cache cargo registry/target uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Install rustfmt & clippy components run: rustup component add rustfmt clippy - name: Install thumbv7em-none-eabihf target run: rustup target add thumbv7em-none-eabihf - name: Install cargo-audit run: cargo install cargo-audit --locked - name: Install cargo-deny run: cargo install cargo-deny --locked - name: Run CI script run: bash scripts/ci-test.sh benchmark: runs-on: ubuntu-latest container: rust:latest if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' steps: - uses: actions/checkout@v4 - name: Cache cargo registry/target uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-bench-${{ hashFiles('**/Cargo.lock') }} - name: Save baseline on main if: github.ref == 'refs/heads/main' run: | cargo bench -p clawhdf5-agent --bench memory_bench -- --save-baseline main 2>&1 || true - name: Compare against baseline on PRs if: github.event_name == 'pull_request' run: | # Download the saved baseline artifact from the target branch if available cargo bench -p clawhdf5-agent --bench memory_bench -- --load-baseline main --baseline main 2>&1 | tee /tmp/bench_output.txt || true if grep -q "Performance has regressed" /tmp/bench_output.txt; then echo "::error::Benchmark regression detected — see bench output above" exit 1 fi