Files
gps-denied-onboard/.github/workflows/nightly.yml
T
Yuzviak a2a9c2ca46 feat(02-05): create nightly.yml for sitl + e2e slow-test lanes
Scheduled at 03:00 UTC daily + workflow_dispatch.
- sitl job: pytest --collect-only -m sitl (scaffold; tests self-skip without
  ARDUPILOT_SITL_HOST; real SITL containers remain in sitl.yml)
- e2e job: pytest -m 'e2e or e2e_slow' (soft-fail in Phase 2; datasets
  self-skip via conftest fixtures; hard-fail enabled in Phase 6 / FIXTURE-01)

sitl.yml untouched per PATTERNS.md §4.3 item 3.
2026-05-11 18:33:04 +03:00

53 lines
2.2 KiB
YAML

name: Nightly (slow tests)
# Run nightly at 03:00 UTC + on manual dispatch.
# Owns the slow-test lanes that don't fit the PR feedback loop:
# - sitl: pytest -m sitl (gated by ARDUPILOT_SITL_HOST in tests)
# - e2e: pytest -m e2e + e2e_slow against real datasets (when present)
#
# The on-demand SITL workflow lives in .github/workflows/sitl.yml and is unchanged.
on:
schedule:
- cron: "0 3 * * *"
workflow_dispatch:
jobs:
sitl:
name: SITL marker collection (scaffold — real SITL via sitl.yml)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
- run: sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends libgl1 libglib2.0-0
- run: pip install --no-cache-dir -e ".[dev]"
- name: Collect SITL tests (skipped without ARDUPILOT_SITL_HOST)
# In nightly, ARDUPILOT_SITL_HOST is intentionally absent; tests self-skip.
# The on-demand .github/workflows/sitl.yml runs the actual SITL containers.
# This job exists so the -m sitl marker is exercised on a recurring basis
# and a collection regression is caught.
run: python -m pytest tests/ -m sitl --collect-only -q
e2e:
name: E2E real-flight dataset replay
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
- run: sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends libgl1 libglib2.0-0
- run: pip install --no-cache-dir -e ".[dev]"
- name: Run e2e tests (skip when datasets are absent)
# tests/e2e/conftest.py fixtures self-skip tests when their dataset path is missing.
# If no dataset is present in the runner image, the job runs the collection but
# most assertions short-circuit on the skip fixture.
run: python -m pytest tests/ -m "e2e or e2e_slow" -v --tb=short || true
# `|| true` to allow soft-failure during Phase 2 bootstrap; flip to hard-fail in
# Phase 6 when FIXTURE-01 lands a CI-provisioned Azaion dataset.