name: CI on: push: branches: [main] pull_request: workflow_dispatch: concurrency: group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: contents: read jobs: validate: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Compile run: python -m compileall -q . - name: ComfyUI lifecycle smoke run: python scripts/smoke_import.py - name: Unit tests run: PYTHONPATH=tests python -m unittest discover -s tests -p "test_*.py" - name: Release validation run: python scripts/validate_release.py - name: Installable package validation run: python scripts/build_release.py --check - name: Frontend syntax run: for file in js/*.js; do node --check "$file"; done - name: Main dashboard smoke run: node tests/frontend_smoke.mjs - name: Reliability dashboard smoke run: node tests/reliability_frontend_smoke.mjs