name: Jyotish Release Quality Gate on: workflow_dispatch: pull_request: branches: [main] paths: - '.github/workflows/release-quality-gate.yml' - 'scripts/run_quality_gate.py' - 'tests/run_frontend_click_smoke.py' - 'tests/run_frontend_runtime_smoke.py' - 'jyotish-app/**' jobs: release-quality-gate: runs-on: ubuntu-latest timeout-minutes: 45 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Set up Node uses: actions/setup-node@v4 with: node-version: '20' cache: npm cache-dependency-path: jyotish-app/package-lock.json - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install -r requirements.txt -r requirements-dev.txt python -m pip install playwright python -m playwright install --with-deps chromium npm ci --prefix jyotish-app - name: Print environment diagnostics run: | python --version node --version npm --version npm --prefix jyotish-app exec -- vite --version python - <<'PY' from pathlib import Path print("frontend node_modules:", (Path("jyotish-app") / "node_modules").exists()) print("vite binary:", (Path("jyotish-app") / "node_modules" / ".bin" / "vite").exists()) PY - name: Run release quality gate run: | mkdir -p artifacts python scripts/run_quality_gate.py --profile release --frontend-click-timeout 240 2>&1 | tee artifacts/release-quality-gate.log - name: Upload release quality gate diagnostics if: always() uses: actions/upload-artifact@v4 with: name: release-quality-gate-diagnostics path: artifacts/