**Environment Variables:** - Fixed docker-compose.ci.yml to use correct environment variable names: - SURREALDB_JWT_SECRET (not SURREAL_JWT_SECRET) - GOOGLE_GENERATIVE_AI_API_KEY (not GOOGLE_API_KEY) - Updated Gitea Actions workflow to match correct variable names **Docker Configuration:** - Removed SurrealDB health check (minimal scratch image lacks utilities) - Added 10-second sleep before Next.js starts to wait for SurrealDB - Updated magnitude service to run as root user for npm global installs - Added xvfb-run to magnitude command for headless browser testing - Updated Playwright Docker image from v1.49.1 to v1.56.1 in both files - Added named volume for node_modules to persist installations **Test Configuration:** - Updated magnitude.config.ts to use Claude Sonnet 4.5 (20250929) - Added headless: true to playwright.config.ts **Testing:** - CI test script (./scripts/test-ci-locally.sh) now works correctly - All services start properly: SurrealDB → Next.js → Magnitude - Playwright launches successfully in headless mode with xvfb-run Note: Users need to ensure .env contains: - ATPROTO_CLIENT_ID - ATPROTO_REDIRECT_URI - SURREALDB_JWT_SECRET - GOOGLE_GENERATIVE_AI_API_KEY - ANTHROPIC_API_KEY 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
90 lines
2.4 KiB
YAML
90 lines
2.4 KiB
YAML
# Simplified docker-compose for CI/CD environments
|
|
# Only includes services needed for testing (excludes surrealmcp)
|
|
|
|
services:
|
|
surrealdb:
|
|
image: surrealdb/surrealdb:latest
|
|
ports:
|
|
- "8000:8000"
|
|
command:
|
|
- start
|
|
- --log
|
|
- trace
|
|
- --user
|
|
- ${SURREALDB_USER:-root}
|
|
- --pass
|
|
- ${SURREALDB_PASS:-root}
|
|
- memory
|
|
environment:
|
|
- SURREAL_LOG=trace
|
|
|
|
nextjs:
|
|
image: node:20-alpine
|
|
working_dir: /app
|
|
ports:
|
|
- "3000:3000"
|
|
volumes:
|
|
- .:/app
|
|
- /app/node_modules
|
|
- /app/.next
|
|
environment:
|
|
- SURREALDB_URL=ws://surrealdb:8000/rpc
|
|
- SURREALDB_USER=${SURREALDB_USER:-root}
|
|
- SURREALDB_PASS=${SURREALDB_PASS:-root}
|
|
- SURREALDB_NS=${SURREALDB_NS:-ponderants}
|
|
- SURREALDB_DB=${SURREALDB_DB:-main}
|
|
- SURREALDB_JWT_SECRET=${SURREALDB_JWT_SECRET}
|
|
- ATPROTO_CLIENT_ID=${ATPROTO_CLIENT_ID}
|
|
- ATPROTO_REDIRECT_URI=${ATPROTO_REDIRECT_URI}
|
|
- GOOGLE_GENERATIVE_AI_API_KEY=${GOOGLE_GENERATIVE_AI_API_KEY}
|
|
- DEEPGRAM_API_KEY=${DEEPGRAM_API_KEY}
|
|
- TEST_BLUESKY_HANDLE=${TEST_BLUESKY_HANDLE}
|
|
- TEST_BLUESKY_PASSWORD=${TEST_BLUESKY_PASSWORD}
|
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
|
- NODE_ENV=development
|
|
command: >
|
|
sh -c "
|
|
npm install -g pnpm &&
|
|
pnpm install --frozen-lockfile &&
|
|
echo 'Waiting for SurrealDB to be ready...' &&
|
|
sleep 10 &&
|
|
pnpm dev
|
|
"
|
|
depends_on:
|
|
- surrealdb
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 20
|
|
start_period: 40s
|
|
|
|
magnitude:
|
|
image: mcr.microsoft.com/playwright:v1.56.1-noble
|
|
working_dir: /app
|
|
user: root
|
|
network_mode: "service:nextjs"
|
|
volumes:
|
|
- .:/app
|
|
- node_modules:/app/node_modules
|
|
environment:
|
|
- TEST_BLUESKY_HANDLE=${TEST_BLUESKY_HANDLE}
|
|
- TEST_BLUESKY_PASSWORD=${TEST_BLUESKY_PASSWORD}
|
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
|
- HOME=/root
|
|
command: >
|
|
sh -c "
|
|
npm install -g pnpm &&
|
|
pnpm install --frozen-lockfile &&
|
|
npx wait-on http://localhost:3000 --timeout 120000 &&
|
|
xvfb-run --auto-servernum --server-args='-screen 0 1280x960x24' npx magnitude
|
|
"
|
|
depends_on:
|
|
nextjs:
|
|
condition: service_healthy
|
|
profiles:
|
|
- test
|
|
|
|
volumes:
|
|
node_modules:
|