fix(ci): remove 16 factorio test files + drop macOS from CI matrix #199
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Fleet CI | |
| on: | |
| push: | |
| branches: [main, dev] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| jobs: | |
| smoke-test: | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| python-version: ['3.11', '3.12', '3.13'] | |
| fail-fast: false | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install httpx anthropic | |
| pip install flask psutil | |
| pip install paho-mqtt playwright | |
| pip install fastmcp tomli | |
| pip install pytest pytest-asyncio | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Create fleet.toml (if missing) | |
| working-directory: fleet | |
| run: | | |
| python -c "from pathlib import Path; p=Path('fleet.toml'); p.exists() or None" | |
| - name: Run smoke tests (fast mode) | |
| working-directory: fleet | |
| run: python smoke_test.py --fast | |
| env: | |
| FLEET_TEST_DB: ":memory:" | |
| - name: Run unit tests (pytest) | |
| working-directory: fleet | |
| run: python -m pytest ../tests/ -v --tb=short -x | |
| env: | |
| FLEET_TEST_DB: ":memory:" | |
| - name: Verify skill imports | |
| working-directory: fleet | |
| run: | | |
| python -c " | |
| import importlib, sys, pathlib | |
| sys.path.insert(0, '.') | |
| skills_dir = pathlib.Path('skills') | |
| failures = [] | |
| count = 0 | |
| for f in sorted(skills_dir.glob('*.py')): | |
| if f.name.startswith('_'): continue | |
| count += 1 | |
| try: | |
| importlib.import_module(f'skills.{f.stem}') | |
| except Exception as e: | |
| failures.append(f'{f.stem}: {e}') | |
| print(f'{count - len(failures)}/{count} skills imported') | |
| if failures: | |
| for f in failures: print(f' FAIL: {f}') | |
| sys.exit(1) | |
| " | |
| - name: Verify CLI commands | |
| working-directory: fleet | |
| run: | | |
| python lead_client.py status || true | |
| python lead_client.py detect-cli | |
| syntax-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Check Python syntax (all .py files) | |
| run: | | |
| python -c " | |
| import ast, sys, pathlib | |
| errors = [] | |
| for f in pathlib.Path('.').rglob('*.py'): | |
| if '.venv' in str(f) or 'node_modules' in str(f): continue | |
| try: | |
| ast.parse(f.read_text(encoding='utf-8')) | |
| except SyntaxError as e: | |
| errors.append(f'{f}: {e}') | |
| if errors: | |
| for e in errors: print(e) | |
| sys.exit(1) | |
| print(f'All .py files pass syntax check') | |
| " | |
| - name: Lint with ruff | |
| run: | | |
| pip install ruff | |
| ruff check fleet/ --select E,W,F | |
| continue-on-error: true |