mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-13 21:27:41 +02:00
74 lines
2.4 KiB
YAML
74 lines
2.4 KiB
YAML
name: Suites on every OS
|
|
|
|
# The three suites (backend pytest, frontend, electron) used to run only on one developer's Mac;
|
|
# CI ran a hermetic subset on Ubuntu. Users run a 2017 iMac, Intel Macs and Windows laptops, so the
|
|
# full suites run on the three hosted OSes. fail-fast is off and every suite runs even after a red
|
|
# one, so one run reports all nine verdicts.
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [eric/dev, main]
|
|
|
|
concurrency:
|
|
group: suites-matrix-${{ github.ref }}
|
|
# A run in flight keeps its verdicts; a push mid-run queues behind it instead of cancelling the Mac legs.
|
|
cancel-in-progress: false
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
suites:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [macos-latest, macos-15-intel, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 60
|
|
env:
|
|
OSW_NEVER_KILL_ROUTER: '1'
|
|
OSW_DISABLE_AUTO_RESUME: '1'
|
|
OSW_NEVER_SPAWN_ROUTER: '1'
|
|
# The packaged app spawns its backend with PYTHONUTF8=1 (electron/main.js); the suite runs the way the product runs, or Windows' cp1252 default fails collection on the first source read.
|
|
PYTHONUTF8: '1'
|
|
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.13'
|
|
cache: pip
|
|
cache-dependency-path: backend/requirements.lock
|
|
|
|
- name: Backend dependencies (the locked set users get, plus the test runner)
|
|
run: |
|
|
pip install -r backend/requirements.lock
|
|
pip install -r backend/requirements-dev.txt
|
|
|
|
- name: Backend suite
|
|
shell: bash
|
|
# A test that hangs fails by NAME after ten minutes and the leg goes on; without this the first macOS run sat at 97% for 54 minutes and was cancelled nameless.
|
|
run: python -m pytest backend/tests -q -p no:cacheprovider --timeout 600
|
|
|
|
- uses: actions/setup-node@v4
|
|
if: always()
|
|
with:
|
|
node-version: '22'
|
|
cache: npm
|
|
cache-dependency-path: |
|
|
frontend/package-lock.json
|
|
electron/package-lock.json
|
|
|
|
- name: Frontend suite
|
|
if: always()
|
|
shell: bash
|
|
working-directory: frontend
|
|
run: npm ci && npm test
|
|
|
|
- name: Electron suite
|
|
if: always()
|
|
shell: bash
|
|
working-directory: electron
|
|
run: npm ci && npm test
|