Root cause of PR checks stuck "Waiting to run": full-pytest on main ran ~12k tests including the slow registry on a 1.5-CPU / 1.2 GiB job cgroup for hours, monopolizing the only runner. Workflows: - full-pytest.yml: fast lane only (`not quarantine and not slow`) - nightly-full-pytest.yml: full suite including slow (schedule + manual) - lane-shas.yml: PR path filters so pin verification is skipped when the change cannot affect lane report bytes Docs: docs/ci-optimization.md + testing-lanes CI mapping. Infra (VM, same change window): job cgroup 2 CPU / 1800 MiB; hung full-pytest task stopped so the queue can drain PR smoke/lane-shas.
52 lines
1.3 KiB
YAML
52 lines
1.3 KiB
YAML
name: nightly-full-pytest
|
||
|
||
# Slow/soak lane — the heavyweight registry excluded from post-merge full-pytest.
|
||
# Runs on a schedule so it cannot starve PR smoke / lane-shas on the single
|
||
# self-hosted Act runner.
|
||
#
|
||
# Manual: Actions → nightly-full-pytest → Run workflow.
|
||
|
||
on:
|
||
schedule:
|
||
# 06:00 UTC daily — adjust if runner is shared with other heavy jobs.
|
||
- cron: "0 6 * * *"
|
||
workflow_dispatch:
|
||
|
||
permissions:
|
||
contents: read
|
||
|
||
concurrency:
|
||
group: nightly-full-pytest
|
||
cancel-in-progress: true
|
||
|
||
jobs:
|
||
pytest-slow:
|
||
name: nightly full (not quarantine, includes slow)
|
||
runs-on: ubuntu-latest
|
||
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 full including slow registry
|
||
env:
|
||
PYTHONPATH: ${{ github.workspace }}
|
||
CORE_SHOWCASE_SKIP_BUDGET: "1"
|
||
UV_LINK_MODE: copy
|
||
run: |
|
||
# Single worker on 2‑vCPU host avoids xdist thrash with 16 min fixtures.
|
||
uv run pytest -m "not quarantine" -n 1 --tb=short -q --maxfail=20
|