-
Notifications
You must be signed in to change notification settings - Fork 0
95 lines (89 loc) · 3.89 KB
/
Copy pathci.yml
File metadata and controls
95 lines (89 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
name: ci
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
with:
python-version: "3.11"
- name: Sync workspace
run: uv sync --all-packages --locked
- name: Lint
run: uv run ruff check .
- name: Type-check libs
run: |
(cd libs/core && uv run mypy src)
(cd libs/llm && uv run mypy src)
- name: Test libs/core
run: cd libs/core && uv run pytest -q --cov=auropro_core --cov-report=term-missing --cov-fail-under=100
- name: Test libs/llm
run: cd libs/llm && uv run pytest -q --cov=auropro_llm --cov-report=term-missing --cov-fail-under=100
- name: Test apps/dla (unit)
run: cd apps/dla && uv run pytest tests/unit -q
- name: Test repo scripts
run: uv run pytest scripts/tests -q --cov=scripts --cov-report=term-missing --cov-fail-under=100
- name: Samples smoke
run: |
uv run python libs/core/samples/quickstart.py
uv run python libs/llm/samples/quickstart.py
- name: Workspace pin guard
run: uv run python scripts/check_workspace_pins.py
- name: Contract mirror guard
run: uv run python scripts/check_contract_mirror.py
- name: License gate (denylist)
run: uv run python scripts/check_licenses.py
- name: License gate (allowlist)
run: |
IGNORE=$(grep -v '^#' scripts/license_ignore.txt | awk '{print $1}' | grep -v '^$' | tr '\n' ' ')
uv run pip-licenses --allow-only="MIT License;Apache Software License;BSD License;ISC License (ISCL);Python Software Foundation License;The Unlicense (Unlicense);BSD-3-Clause;BSD-2-Clause;Apache-2.0;MIT;Apache License 2.0;PSF-2.0;Apache-2.0 AND MIT;Apache-2.0 AND CNRI-Python;Apache-2.0 OR BSD-2-Clause;Apache Software License; BSD License;Apache Software License; MIT License;MIT OR Apache-2.0;BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0" --ignore-packages $IGNORE
shell: bash
# Wave 8 — the full pipeline against a real Postgres (both committed
# fixtures), per PR: manifest==disk, zero-diff idempotency re-run, seeded
# readiness ground truth, exit-code contract, recommender routing.
e2e:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- fixture: small
compose: apps/dla/tests/fixtures/postgres/docker-compose.yaml
- fixture: large
compose: apps/dla/tests/fixtures/postgres_large/docker-compose.yaml
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
with:
python-version: "3.11"
- name: Sync workspace
run: uv sync --all-packages --locked
- name: Start Postgres fixture (${{ matrix.fixture }})
run: docker compose -f ${{ matrix.compose }} up -d --wait --wait-timeout 120
- name: E2E (${{ matrix.fixture }} fixture)
env:
DLA_E2E_FIXTURE: ${{ matrix.fixture }}
DLA_DB_PASSWORD: dla_dev_password
run: cd apps/dla && uv run pytest tests/e2e -q
- name: Fixture logs (on failure)
if: failure()
run: docker compose -f ${{ matrix.compose }} logs --tail 100
osv-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: OSV scan (lockfile)
uses: google/osv-scanner-action/osv-scanner-action@9a498708959aeaef5ef730655706c5a1df1edbc2 # v2.3.8
with:
scan-args: |-
--config=osv-scanner.toml
--lockfile=uv.lock