Files
CapaKraken/.github/workflows/deploy-test.yml
T
Hartmut 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
ci: skip CI/deploy/release workflows on docs-only changes
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>
2026-04-12 14:42:03 +02:00

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