002f44ea3d
CI / Architecture Guardrails (push) Waiting to run
CI / Unit Tests (push) Waiting to run
CI / Assistant Split Regression (push) Failing after 5m55s
CI / Build (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Lint (push) Has started running
Release Image / Build And Push Images (push) Failing after 13m31s
Docker Deploy Test / Fresh-Linux Docker Deploy (push) Failing after 13m52s
CI / Typecheck (push) Waiting to run
Adds paths-ignore filters so changes under docs/, .gitea/, *.md, and LICENSE don't trigger the full CI matrix, image builds, or test-deploy on Gitea Actions. Saves ~30+ minutes per docs commit. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
101 lines
2.7 KiB
YAML
101 lines
2.7 KiB
YAML
name: Docker Deploy Test
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- ".gitea/**"
|
|
- "**/*.md"
|
|
- "LICENSE"
|
|
pull_request:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- ".gitea/**"
|
|
- "**/*.md"
|
|
- "LICENSE"
|
|
|
|
concurrency:
|
|
group: deploy-test-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
docker-deploy-test:
|
|
name: Fresh-Linux Docker Deploy
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Create minimal .env
|
|
run: |
|
|
cat <<'EOF' > .env
|
|
NEXTAUTH_URL=http://localhost:3100
|
|
NEXTAUTH_SECRET=ci-test-secret-minimum-32-chars-xx
|
|
PGADMIN_PASSWORD=ci-pgadmin
|
|
EOF
|
|
|
|
- name: Start infrastructure (postgres + redis)
|
|
run: docker compose up -d postgres redis
|
|
|
|
- name: Wait for postgres
|
|
run: |
|
|
for i in $(seq 1 20); do
|
|
docker compose exec -T postgres pg_isready -U capakraken -d capakraken && break
|
|
sleep 3
|
|
done
|
|
|
|
- name: Build and start app (full profile)
|
|
run: docker compose --profile full up -d --build app
|
|
|
|
- name: Wait for /api/health (up to 3 minutes)
|
|
run: |
|
|
for i in $(seq 1 36); do
|
|
STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3100/api/health || echo "000")
|
|
echo "Attempt $i: HTTP $STATUS"
|
|
if [ "$STATUS" = "200" ]; then exit 0; fi
|
|
sleep 5
|
|
done
|
|
echo "Health check timed out"
|
|
docker compose logs app --tail=50
|
|
exit 1
|
|
|
|
- name: Verify health response contains status ok
|
|
run: |
|
|
BODY=$(curl -sf http://localhost:3100/api/health)
|
|
echo "$BODY"
|
|
echo "$BODY" | grep '"status":"ok"'
|
|
|
|
- name: Seed admin user
|
|
run: |
|
|
docker compose exec -T app node /app/scripts/setup-admin.mjs \
|
|
--email admin@capakraken.dev \
|
|
--name "Admin" \
|
|
--password admin123
|
|
|
|
- name: Set up Node.js 20
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
|
|
- name: Install Playwright and Chromium
|
|
run: |
|
|
npm install -g @playwright/test@1.49
|
|
playwright install chromium --with-deps
|
|
|
|
- name: Run smoke tests
|
|
run: npx playwright test --config apps/web/playwright.ci.config.ts
|
|
|
|
- name: Upload Playwright report
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: playwright-smoke-report
|
|
path: apps/web/playwright-report/
|
|
retention-days: 7
|
|
|
|
- name: Show logs on failure
|
|
if: failure()
|
|
run: docker compose logs --tail=100
|