hermes-hub/.github/workflows/ci.yml
ochenstarik-ui b4ae08ef53 fix(ci): stop hanging hermetic tests and unblock clean/headless runners
Preflight and updater tests no longer probe 8081/8082 or GitHub.
Hermetic runs fail-fast on non-loopback sockets. GUI helpers are
importable without customtkinter. CI installs the web extra, and
pytest-timeout plus a wall-clock wrapper bound the suite.
2026-08-27 12:03:37 +00:00

67 lines
1.6 KiB
YAML

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
name: Clean Windows Runner Test
runs-on: windows-latest
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev,web]"
- name: Code Quality (ruff)
run: |
ruff check .
- name: Run Hermetic Offline Pytest Suite
run: |
pytest -v
- name: Run Automated Release Gate
run: |
python scripts/release_gate.py
headless:
name: Headless Run (no GUI dependencies)
runs-on: windows-latest
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install dependencies without GUI extras
run: |
python -m pip install --upgrade pip
pip install -e ".[dev,web]"
pip uninstall -y customtkinter
# A test module importing customtkinter at module scope aborts collection
# of the WHOLE session instead of skipping itself, which takes the release
# gate down with it. This job fails if that guard is ever dropped again.
- name: Suite must skip, not abort, without GUI dependencies
run: |
pytest -q