Repository navigation
148 lines (138 loc) · 4.84 KB
/
Copy pathci.yml
File metadata and controls
148 lines (138 loc) · 4.84 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
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- run: pip install ruff lizard==1.24.0 vulture==2.16
- run: ruff check src/ tests/
- name: Ruff proving test
run: bash scripts/test-check-ruff.sh
- name: Ruff baseline
run: python3 scripts/check-ruff.py src tests
- name: Complexity proving test
run: bash scripts/test-check-complexity.sh
- name: PR-diff complexity
run: python3 scripts/check-complexity.py --base origin/main --paths src
- name: Hotspot proving test
run: bash scripts/test-check-hotspots.sh
- name: PR-diff hotspots
run: python3 scripts/check-hotspots.py --base origin/main --paths src
- name: Vulture proving test
run: bash scripts/test-check-vulture.sh
- name: Vulture baseline
run: python3 scripts/check-vulture.py src tests
- name: Mutation score proving test
run: bash scripts/test-check-mutation.sh
unit:
runs-on: ubuntu-latest
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
PYTHONPATH: ${{ github.workspace }}/src
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install system dependencies
run: |
set -euo pipefail
attempt=1
max_attempts=4
backoff=4
while [ "$attempt" -le "$max_attempts" ]; do
echo "apt attempt $attempt/$max_attempts"
if timeout 600s sudo apt-get -o Acquire::Retries=3 update \
&& timeout 600s sudo apt-get -o Acquire::Retries=3 install -y --no-install-recommends ffmpeg tesseract-ocr; then
exit 0
fi
if [ "$attempt" -eq "$max_attempts" ]; then
echo "apt failed after $max_attempts attempts"
exit 1
fi
echo "apt failed, retrying in ${backoff}s..."
sleep "$backoff"
backoff=$((backoff * 2))
attempt=$((attempt + 1))
done
- run: pip install --no-cache-dir ".[dev]"
- run: pytest tests/ -v --tb=short
# Required gate for clock / scene-compile changes. Do not remove: tests
# assert this job runs `docgen benchmark` against the committed baseline.
benchmark:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- run: pip install --no-cache-dir "."
- name: Scene-timing benchmark
run: docgen benchmark
# Required: invoke `docgen validate` on a fixture bundle. Scratch `init`
# (not an in-repo dogfood tree). A listed segment with no recordings must
# exit 1 — if that FAIL becomes a silent pass, this job goes red.
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- run: pip install --no-cache-dir "."
- name: Validate scratch init bundle
run: bash scripts/ci-validate-scratch-bundle.sh
# mutmut on src/docgen/path_filters.py only. The job reads the committed
# survived ceiling and does not rewrite it.
mutation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install system dependencies
run: |
set -euo pipefail
attempt=1
max_attempts=4
backoff=4
while [ "$attempt" -le "$max_attempts" ]; do
echo "apt attempt $attempt/$max_attempts"
if timeout 600s sudo apt-get -o Acquire::Retries=3 update \
&& timeout 600s sudo apt-get -o Acquire::Retries=3 install -y --no-install-recommends ffmpeg tesseract-ocr; then
exit 0
fi
if [ "$attempt" -eq "$max_attempts" ]; then
echo "apt failed after $max_attempts attempts"
exit 1
fi
echo "apt failed, retrying in ${backoff}s..."
sleep "$backoff"
backoff=$((backoff * 2))
attempt=$((attempt + 1))
done
- run: pip install --no-cache-dir ".[dev]" "mutmut==3.8.0"
- name: Mutation score for path_filters.py
env:
PYTHONPATH: ${{ github.workspace }}/src
run: |
mutmut run --max-children 1
mutmut export-cicd-stats
python3 scripts/check-mutation-score.py