41 lines
1.3 KiB
YAML
41 lines
1.3 KiB
YAML
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
|