name: Validation
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
jobs:
check:
name: Rust checks and validation suites
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Check default targets
run: cargo check --all-targets --locked
- name: Check Python FFI targets
run: cargo check --all-targets --features python-ffi --locked
- name: Run tests
run: cargo test --all-targets --locked
- name: Check crate package
run: cargo package --locked
- name: Run validation suites
run: |
cargo run --release --bin aufbau -- validate \
--jobs "$(nproc)" \
--completable-timeout-secs 30
- name: Show generated reports
if: always()
run: |
echo "Validation reports:"
ls -la src/validation/reports || true
echo "--- latest report ---"
ls -t src/validation/reports/*.txt 2>/dev/null | head -n 1 || true
tail -n +1 src/validation/reports/*.txt 2>/dev/null || true
- name: Upload validation reports
if: always()
uses: actions/upload-artifact@v4
with:
name: validation-reports-check
path: src/validation/reports/*.txt