-
Notifications
You must be signed in to change notification settings - Fork 120
160 lines (135 loc) · 3.59 KB
/
ci.yml
File metadata and controls
160 lines (135 loc) · 3.59 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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
name: AIQ CI
on:
pull_request:
branches:
- develop
push:
branches:
- develop
permissions:
contents: read
concurrency:
group: aiq-ci-${{ github.ref }}
cancel-in-progress: true
jobs:
pre-commit:
name: Lint and Hooks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Setup uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install markdown-link-check
run: npm install -g markdown-link-check
- name: Install dev dependencies
run: |
uv venv --python 3.13 .venv
uv sync --group dev
uv pip install nbconvert
- name: Ruff checks
run: |
. .venv/bin/activate
ruff check .
ruff format --check .
- name: Run remaining pre-commit hooks
run: |
. .venv/bin/activate
SKIP=ruff-check,ruff-format,pytest,helm-lint pre-commit run --all-files
test:
name: Pytest and Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Setup uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Install test dependencies
run: |
uv venv --python 3.13 .venv
uv sync --group dev
- name: Run tests with coverage
run: |
set -euo pipefail
. .venv/bin/activate
python -X faulthandler -m pytest tests/ -v \
--junitxml=report.xml \
--cov=src/aiq_agent \
--cov-report=xml \
--cov-report=html \
--cov-report=term \
--cov-fail-under=65
- name: Upload coverage artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: pytest-coverage
path: |
report.xml
coverage.xml
htmlcov/
retention-days: 7
helm-lint:
name: Helm Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Helm
uses: azure/setup-helm@v4
- name: Lint Helm charts
run: |
for chart in deploy/helm/helm-charts-k8s/*; do
if [ -d "$chart" ]; then
helm lint "$chart"
fi
done
test-scripts:
name: Script Validation
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Setup uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Install script test dependencies
shell: bash
run: |
set -euo pipefail
uv venv --python 3.13 .venv
uv sync --group dev
for pkg in \
./frontends/benchmarks/freshqa \
./frontends/benchmarks/intent_classifier
do
if [ -d "$pkg" ]; then
uv pip install --no-deps -e "$pkg"
fi
done
- name: Run script tests
run: |
. .venv/bin/activate
chmod +x ci/scripts/test_scripts.sh
ci/scripts/test_scripts.sh --skip-setup