Skip to content

Fail closed when a mixed compose source is missing #385

Fail closed when a mixed compose source is missing

Fail closed when a mixed compose source is missing #385

Workflow file for this run

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
- run: ruff check 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
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