Skip to content

Merge pull request #15 from Aubrey-M-ops/fix-cicd #30

Merge pull request #15 from Aubrey-M-ops/fix-cicd

Merge pull request #15 from Aubrey-M-ops/fix-cicd #30

Workflow file for this run

name: CI
on:
push:
branches: ["master", "main", "develop"]
pull_request:
branches: ["develop"]
jobs:
check-skip:
name: Check Skip Conditions
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.check.outputs.should_skip }}
steps:
- name: Check commit message
id: check
env:
MSG: ${{ github.event.head_commit.message }}
run: |
PATTERN='^docs?: '
if [[ "$MSG" =~ $PATTERN ]]; then
echo "should_skip=true" >> "$GITHUB_OUTPUT"
else
echo "should_skip=false" >> "$GITHUB_OUTPUT"
fi
lint-and-typecheck:
name: Lint & Type Check
needs: check-skip
if: needs.check-skip.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Generate Prisma Client
run: npx prisma generate
- name: Run ESLint
run: npm run lint
- name: Run Type Check
run: npx tsc --noEmit
- name: Check Supabase Configuration
run: |
echo "Checking Supabase environment variables..."
if [ -z "$NEXT_PUBLIC_SUPABASE_URL" ]; then
echo "❌ NEXT_PUBLIC_SUPABASE_URL is not set"
exit 1
fi
if [ -z "$NEXT_PUBLIC_SUPABASE_ANON_KEY" ]; then
echo "❌ NEXT_PUBLIC_SUPABASE_ANON_KEY is not set"
exit 1
fi
echo "✅ Supabase environment variables are configured"
env:
NEXT_PUBLIC_SUPABASE_URL: "https://mock.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY: "mock-anon-key"
- name: Validate Prisma Schema
run: npx prisma validate
build:
name: Build Check
runs-on: ubuntu-latest
needs: [check-skip, lint-and-typecheck]
if: needs.check-skip.outputs.should_skip != 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Generate Prisma Client
run: npx prisma generate
- name: Verify Supabase Integration
run: |
echo "Verifying Supabase package installation..."
if grep -q "@supabase/supabase-js" package.json; then
echo "✅ @supabase/supabase-js is installed"
else
echo "⚠️ @supabase/supabase-js is not in package.json"
fi
- name: Build project
run: npm run build
env:
# 使用 mock 环境变量用于构建验证
DATABASE_URL: "postgresql://mock:mock@localhost:5432/mock"
SECONDME_CLIENT_ID: "mock-client-id"
SECONDME_CLIENT_SECRET: "mock-client-secret"
SECONDME_REDIRECT_URI: "http://localhost:3000/api/auth/callback"
SECONDME_API_BASE_URL: "https://app.mindos.com/gate/lab"
SECONDME_OAUTH_URL: "https://go.second.me/oauth/"
SECONDME_TOKEN_ENDPOINT: "https://app.mindos.com/gate/lab/api/oauth/token/code"
NEXT_PUBLIC_APP_URL: "http://localhost:3000"
NEXT_PUBLIC_SUPABASE_URL: "https://mock.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY: "mock-anon-key"
SUPABASE_SERVICE_ROLE_KEY: "mock-service-role-key"