mirror of https://github.com/buster-so/buster.git
test
This commit is contained in:
parent
61691babe7
commit
fd05032d86
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue