name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
jobs:
gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - run: cargo fmt --check
- run: cargo clippy --all-targets -- -D warnings
- name: 채점표 게이트 (유닛 + 통합 + 코퍼스)
run: cargo test
- name: 자기 검사 (dogfood)
run: cargo run --quiet -- scan . --strict
action-selftest:
strategy:
matrix:
runner: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - uses: ./
with:
strict: true
egress-e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - run: sudo apt-get update && sudo apt-get install -y dnsutils
- run: cargo build --release
- run: bash tests/e2e/egress-e2e.sh target/release/just-shield
observe-selftest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - uses: ./
with:
mode: observe
- run: curl -sS https://crates.io > /dev/null || true - name: 관찰이 실제로 동작했는지 단언
run: |
rec="${RUNNER_TEMP}/just-shield-record.txt"
test -s "$rec" || { echo "기록이 비었습니다 — 관찰자가 사용자 스텝을 못 봤습니다" >&2; exit 1; }
grep -q "crates.io" "$rec" || { echo "기록에 crates.io가 없습니다:" >&2; cat "$rec" >&2; exit 1; }
echo "✅ 관찰자가 사용자 스텝의 DNS(crates.io)를 기록했다"