Unblock the single Act runner: post-merge full-pytest runs the fast marker (not quarantine and not slow); full non-quarantine suite moves to nightly + workflow_dispatch. lane-shas uses job-level path detection so docs-only PRs skip green without hanging required checks. Sync smoke/conftest/docs CI contracts to the PR/main/nightly policy.
72 lines
2.2 KiB
YAML
72 lines
2.2 KiB
YAML
name: nightly-full-pytest
|
||
|
||
# Nightly FULL lane — complete non-quarantine suite including the slow registry.
|
||
#
|
||
# Marker: -m "not quarantine"
|
||
# Includes soak / bench / proof / register-matrix (SLOW_FILES + SLOW_TESTS).
|
||
# Intentionally off the PR and post-merge critical path so a single 2-vCPU
|
||
# Act runner is not held for 1–2h after every main push (see docs/ci-optimization.md).
|
||
#
|
||
# Risk owned here: a main merge can break slow tests until the next nightly
|
||
# (or a manual workflow_dispatch). Treat red nightlies as release-blocking
|
||
# debt; re-run via Actions → nightly-full-pytest → Run workflow after fixes.
|
||
#
|
||
# See docs/testing-lanes.md for the full CI policy.
|
||
|
||
on:
|
||
schedule:
|
||
# 02:00 UTC daily — off peak for human PR iteration.
|
||
- cron: '0 2 * * *'
|
||
workflow_dispatch:
|
||
|
||
permissions:
|
||
contents: read
|
||
|
||
concurrency:
|
||
group: nightly-full-pytest
|
||
cancel-in-progress: false
|
||
|
||
jobs:
|
||
pytest:
|
||
name: full pytest (-m "not quarantine" -n 2)
|
||
runs-on: ubuntu-latest
|
||
# Full suite parallel floor includes ~16 min phase2 fixture; thrashing on a
|
||
# 2-vCPU Act host has been observed well past 60 min. Prefer a red timeout
|
||
# only after a genuine hang, not under normal soak load.
|
||
timeout-minutes: 120
|
||
|
||
steps:
|
||
- name: checkout
|
||
uses: actions/checkout@v4
|
||
with:
|
||
fetch-depth: 1
|
||
ref: main
|
||
|
||
- name: set up uv
|
||
uses: astral-sh/setup-uv@v5
|
||
with:
|
||
python-version: '3.12.13'
|
||
enable-cache: true
|
||
|
||
- name: install dependencies
|
||
run: |
|
||
uv pip install -e ".[dev]" pyyaml
|
||
|
||
- name: pytest (parallel, full suite, quarantine excluded)
|
||
env:
|
||
PYTHONPATH: ${{ github.workspace }}
|
||
CORE_SHOWCASE_SKIP_BUDGET: "1"
|
||
run: |
|
||
uv run pytest -m "not quarantine" -n 2 --tb=short -q --maxfail=10
|
||
|
||
- name: report quarantine size (informational)
|
||
if: always()
|
||
env:
|
||
PYTHONPATH: ${{ github.workspace }}
|
||
run: |
|
||
uv run python -c "
|
||
import sys
|
||
sys.path.insert(0, '.')
|
||
from conftest import QUARANTINE
|
||
print(f'::notice title=Quarantine size::{len(QUARANTINE)} tests currently quarantined. Goal: shrink this number.')
|
||
"
|