This commit is contained in:
Wells Bunker 2025-09-26 08:30:52 -06:00
parent 61691babe7
commit fd05032d86
No known key found for this signature in database
GPG Key ID: DB16D6F2679B78FC
2 changed files with 201 additions and 2 deletions

View File

@ -26,11 +26,209 @@ jobs:
with:
cache-key: build-lint-unit
- name: test trigger dev
run: cd apps/trigger && pnpm dlx trigger.dev@latest dev
- name: Pre-pull Docker images
run: |
echo "🐳 Pre-pulling Docker images for faster startup..."
# Pull all images in parallel
docker pull electricsql/electric &
docker pull supabase/postgres:15.1.0.147 &
docker pull supabase/gotrue:v2.149.0 &
docker pull supabase/realtime:v2.28.32 &
docker pull supabase/postgrest:v12.2.0 &
docker pull supabase/storage-api:v0.46.4 &
docker pull supabase/postgres-meta:v0.83.2 &
docker pull supabase/studio:20240422.09 &
docker pull supabase/edge-runtime:v1.53.4 &
docker pull kong:2.8.1 &
docker pull darthsim/imgproxy:v3.8.0 &
wait
echo "✅ Docker images pre-pulled successfully"
- name: Start services in background
run: |
echo "🚀 Starting all services in background..."
pnpm turbo start > turbo.log 2>&1 &
echo $! > turbo.pid
echo "Started turbo with PID $(cat turbo.pid)"
env:
SKIP_ENV_CHECK: true
TURBO_TELEMETRY_DISABLED: 1
# Pass all secrets from the testing environment
MOMENTIC_API_KEY: ${{ secrets.MOMENTIC_API_KEY }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}
SUPABASE_ANON_KEY: ${{ secrets.SUPABASE_ANON_KEY }}
SUPABASE_PUBLIC_URL: ${{ secrets.SUPABASE_PUBLIC_URL }}
VITE_PUBLIC_API_URL: ${{ secrets.VITE_PUBLIC_API_URL }}
VITE_PUBLIC_API2_URL: ${{ secrets.VITE_PUBLIC_API2_URL }}
VITE_PUBLIC_WEB_SOCKET_URL: ${{ secrets.VITE_PUBLIC_WEB_SOCKET_URL }}
VITE_PUBLIC_URL: ${{ secrets.VITE_PUBLIC_URL }}
VITE_PUBLIC_SUPABASE_URL: ${{ secrets.VITE_PUBLIC_SUPABASE_URL }}
VITE_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.VITE_PUBLIC_SUPABASE_ANON_KEY }}
VITE_PUBLIC_WS_URL: ${{ secrets.VITE_PUBLIC_WS_URL }}
VITE_PUBLIC_POSTHOG_KEY: ${{ secrets.VITE_PUBLIC_POSTHOG_KEY }}
VITE_PUBLIC_POSTHOG_HOST: ${{ secrets.VITE_PUBLIC_POSTHOG_HOST }}
VITE_SLACK_APP_SUPPORT_URL: ${{ secrets.VITE_SLACK_APP_SUPPORT_URL }}
VITE_PRIVATE_SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.VITE_PRIVATE_SUPABASE_SERVICE_ROLE_KEY }}
SERVER_PORT: ${{ secrets.SERVER_PORT }}
ELECTRIC_PROXY_URL: ${{ secrets.ELECTRIC_PROXY_URL }}
ELECTRIC_PORT: ${{ secrets.ELECTRIC_PORT }}
ELECTRIC_INSECURE: ${{ secrets.ELECTRIC_INSECURE }}
ELECTRIC_SECRET: ${{ secrets.ELECTRIC_SECRET }}
ELECTRIC_SOURCE_ID: ${{ secrets.ELECTRIC_SOURCE_ID }}
RERANK_API_KEY: ${{ secrets.RERANK_API_KEY }}
RERANK_MODEL: ${{ secrets.RERANK_MODEL }}
RERANK_BASE_URL: ${{ secrets.RERANK_BASE_URL }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
LLM_BASE_URL: ${{ secrets.LLM_BASE_URL }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
TURBOPUFFER_API_KEY: ${{ secrets.TURBOPUFFER_API_KEY }}
TURBOPUFFER_REGION: ${{ secrets.TURBOPUFFER_REGION }}
POSTHOG_TELEMETRY_KEY: ${{ secrets.POSTHOG_TELEMETRY_KEY }}
BRAINTRUST_KEY: ${{ secrets.BRAINTRUST_KEY }}
BRAINTRUST_API_KEY: ${{ secrets.BRAINTRUST_API_KEY }}
TRIGGER_SECRET_KEY: ${{ secrets.TRIGGER_SECRET_KEY }}
TRIGGER_ACCESS_TOKEN: ${{ secrets.TRIGGER_ACCESS_TOKEN }}
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
R2_BUCKET: ${{ secrets.R2_BUCKET }}
GITHUB_APP_ID: ${{ secrets.GITHUB_APP_ID }}
GITHUB_APP_PRIVATE_KEY_BASE64: ${{ secrets.GITHUB_APP_PRIVATE_KEY_BASE64 }}
GITHUB_WEBHOOK_SECRET: ${{ secrets.GITHUB_WEBHOOK_SECRET }}
# Additional variables from .env
ENVIRONMENT: ${{ secrets.ENVIRONMENT }}
LOG_LEVEL: ${{ secrets.LOG_LEVEL }}
BUSTER_URL: ${{ secrets.BUSTER_URL }}
BUSTER_WH_TOKEN: ${{ secrets.BUSTER_WH_TOKEN }}
POOLER_URL: ${{ secrets.POOLER_URL }}
SERVER_URL: ${{ secrets.SERVER_URL }}
JWT_SECRET: ${{ secrets.JWT_SECRET }}
SLACK_CLIENT_ID: ${{ secrets.SLACK_CLIENT_ID }}
SLACK_CLIENT_SECRET: ${{ secrets.SLACK_CLIENT_SECRET }}
SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
SLACK_APP_SUPPORT_URL: ${{ secrets.SLACK_APP_SUPPORT_URL }}
AI_GATEWAY_API_KEY: ${{ secrets.AI_GATEWAY_API_KEY }}
DAYTONA_API_KEY: ${{ secrets.DAYTONA_API_KEY }}
- name: Wait for services to be ready
run: |
echo "⏳ Waiting for services to be ready..."
# Function to check if a service is ready
check_service() {
local port=$1
local service_name=$2
local max_attempts=60
local attempt=0
echo "🔍 Checking $service_name on port $port..."
while [ $attempt -lt $max_attempts ]; do
if curl -s --connect-timeout 2 --max-time 5 http://localhost:$port > /dev/null 2>&1; then
echo "✅ $service_name is ready!"
return 0
fi
echo " Waiting for $service_name (attempt $((attempt+1))/$max_attempts)..."
sleep 3
attempt=$((attempt+1))
done
echo "❌ $service_name failed to start on port $port"
return 1
}
# Function to check database
check_database() {
local max_attempts=40
local attempt=0
echo "🔍 Checking database connectivity..."
while [ $attempt -lt $max_attempts ]; do
if pg_isready -h localhost -p 54322 -U postgres > /dev/null 2>&1; then
echo "✅ Database is ready!"
return 0
fi
echo " Waiting for database (attempt $((attempt+1))/$max_attempts)..."
sleep 2
attempt=$((attempt+1))
done
echo "❌ Database failed to start"
return 1
}
# Check database first
if ! check_database; then
echo "💥 Database startup failed"
echo "=== Turbo logs ==="
tail -50 turbo.log || true
exit 1
fi
# Check services in order
services=(
"3002:Server"
"3001:API"
"3000:Web"
)
failed_services=()
for service in "${services[@]}"; do
port=$(echo $service | cut -d: -f1)
name=$(echo $service | cut -d: -f2)
if ! check_service $port "$name"; then
failed_services+=("$name")
fi
done
# Report results
if [ ${#failed_services[@]} -eq 0 ]; then
echo "🎉 All services are ready!"
echo "📊 Service Status:"
echo " Database: ✅ (port 54322)"
for service in "${services[@]}"; do
port=$(echo $service | cut -d: -f1)
name=$(echo $service | cut -d: -f2)
echo " $name: ✅ (port $port)"
done
else
echo "💥 Some services failed to start: ${failed_services[*]}"
echo "=== Turbo logs ==="
tail -50 turbo.log || true
exit 1
fi
- name: Run Momentic E2E Tests
run: |
echo "🧪 Running Momentic E2E tests..."
cd apps/momentic
pnpm dlx momentic install-browsers --all
pnpm dlx momentic run --api-key $MOMENTIC_API_KEY
env:
MOMENTIC_API_KEY: ${{ secrets.MOMENTIC_API_KEY }}
- name: Upload results
run: npx momentic results upload test-results
env:
MOMENTIC_API_KEY: ${{ secrets.MOMENTIC_API_KEY }}
- name: Stop services
if: always()
run: |
echo "🛑 Stopping services..."
if [ -f turbo.pid ]; then
kill $(cat turbo.pid) || true
rm turbo.pid
fi
echo "=== Final turbo output ==="
tail -100 turbo.log || true
# - name: Lint all packages
# run: pnpm turbo lint

View File

@ -97,6 +97,7 @@
"AI_GATEWAY_API_KEY",
"BRAINTRUST_KEY",
"TRIGGER_SECRET_KEY",
"TRIGGER_ACCESS_TOKEN",
"R2_ACCOUNT_ID",
"R2_ACCESS_KEY_ID",
"R2_SECRET_ACCESS_KEY",