name: Production bootstrap drill on: workflow_dispatch: schedule: - cron: "17 3 * * 6" jobs: isolated-production-bootstrap: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22" cache: npm cache-dependency-path: apps/web/package-lock.json - name: Install web dependencies run: npm --prefix apps/web ci - name: Run isolated production bootstrap shell: bash run: | set -o pipefail mkdir -p artifacts ./deploy/test-production-bootstrap.sh 2>&1 | tee artifacts/production-bootstrap.log - name: Collect failure diagnostics if: failure() run: | docker compose --env-file .env.production.example -f compose.production.yaml ps -a > artifacts/compose-ps.txt 2>&1 || true cp -R apps/web/test-results artifacts/test-results 2>/dev/null || true cp -R apps/web/playwright-report artifacts/playwright-report 2>/dev/null || true - name: Upload drill diagnostics if: always() uses: actions/upload-artifact@v4 with: name: production-bootstrap-${{ github.run_id }} path: artifacts if-no-files-found: error retention-days: 14