deployment-verification
3
总安装量
1
周安装量
#57136
全站排名
安装命令
npx skills add https://github.com/dseirz-rgb/worker --skill deployment-verification
Agent 安装分布
amp
1
opencode
1
cursor
1
kimi-cli
1
codex
1
github-copilot
1
Skill 文档
Deployment Verification (é¨ç½²éªè¯)
ð æ ¸å¿ç念: é¨ç½²ä¸æ¯ç»ç¹ï¼éªè¯ææ¯ãæªç»éªè¯çé¨ç½²çäºæ²¡æé¨ç½²ã
ð´ 第ä¸ååï¼é¨ç½²åå¿ é¡»éªè¯
ä»»ä½é¨ç½²é½å¿ é¡»ç»è¿å®æ´éªè¯æµç¨ï¼
â é误æè·¯: "ä»£ç æ¨éäºï¼åºè¯¥æ²¡é®é¢"
â
æ£ç¡®æè·¯: "ä»£ç æ¨éäºï¼è®©æéªè¯ä¸ä¸é¨ç½²ç¶æååè½"
â é误æè·¯: "æ¬å°æµè¯éè¿äºï¼çº¿ä¸è¯å®ä¹è¡"
â
æ£ç¡®æè·¯: "æ¬å°æµè¯éè¿äºï¼ä½çº¿ä¸ç¯å¢ä¸åï¼å¿
é¡»éªè¯"
éªè¯ä¼å 级: å¥åº·æ£æ¥ > æ ¸å¿åè½ > è¾¹ç¼åºæ¯ > æ§è½ææ
When to Use This Skill
ä½¿ç¨æ¤æè½å½ä½ éè¦ï¼
- é¨ç½²ä»£ç å° Vercel æ GCP Cloud Run
- éªè¯é¨ç½²æ¯å¦æå
- æ£æ¥ç¯å¢å鿝妿£ç¡®åæ¥
- ææ¥é¨ç½²å¤±è´¥çé®é¢
- 确认 CI/CD æµç¨æ£å¸¸è¿è¡
- éªè¯å¥åº·æ£æ¥ç«¯ç¹
Not For / Boundaries
æ¤æè½ä¸éç¨äºï¼
- æ¬å°å¼åç¯å¢è°è¯
- åå æµè¯ç¼å
- 代ç å®¡æ¥æµç¨
Quick Reference
ð¯ é¨ç½²éªè¯å·¥ä½æµ
代ç ä¿®æ¹ â æ¬å°æµè¯ â Git Commit â Git Push â çå¾
æå»º â éªè¯é¨ç½² â åè½æµè¯ â 宿
â â
失败 â ä¿®å¤ å¤±è´¥ â æ¥æ¥å¿ â ä¿®å¤ â éæ°é¨ç½²
ð é¨ç½²åå¿ æ¥æ¸ å
| æ£æ¥é¡¹ | å½ä»¤/æä½ | éè¿æ å |
|---|---|---|
| æ¬å°æå»º | npm run build |
æ é误 |
| æ¬å°æµè¯ | npm test |
å ¨é¨éè¿ |
| ç±»åæ£æ¥ | npm run typecheck |
æ é误 |
| Lint æ£æ¥ | npm run lint |
æ é误 |
| ç¯å¢åé | å¯¹æ¯ .env åçº¿ä¸ |
å®å ¨åæ¥ |
â é¨ç½²åå¿ éªæ¸ å
| éªè¯é¡¹ | æ¹æ³ | éè¿æ å |
|---|---|---|
| é¨ç½²ç¶æ | æ¥ç CI/CD æ¥å¿ | ç¶æä¸ºæå |
| å¥åº·æ£æ¥ | curl /api/health |
è¿å 200 |
| æ ¸å¿åè½ | Playwright æµè¯ | åè½æ£å¸¸ |
| æ§å¶å°æ¥å¿ | æµè§å¨ DevTools | æ é误 |
| ç½ç»è¯·æ± | Network 颿¿ | æ å¤±è´¥è¯·æ± |
é¨ç½²éªè¯å·¥ä½æµ
Phase 1: é¨ç½²ååå¤
# 1. ç¡®ä¿ä»£ç è´¨é
npm run build # æå»ºæ£æ¥
npm run test # æµè¯æ£æ¥
npm run lint # 代ç è§èæ£æ¥
# 2. æ£æ¥ç¯å¢åé忥
# æ¬å°ç¯å¢åé
grep -E "^[A-Z]" .env | cut -d= -f1 | sort > /tmp/local-env.txt
# Vercel ç¯å¢åé
vercel env ls | grep -E "^[A-Z]" | awk '{print $1}' | sort > /tmp/vercel-env.txt
# 对æ¯å·®å¼
diff /tmp/local-env.txt /tmp/vercel-env.txt
# 3. æäº¤ä»£ç
git add .
git commit -m "feat: æè¿°æ§æäº¤ä¿¡æ¯"
git push origin main
Phase 2: çæ§é¨ç½²è¿ç¨
# Vercel é¨ç½²çæ§
vercel ls --limit 5 # æ¥çæè¿é¨ç½²
# æéè¿ GitHub Actions
gh run list --limit 5
gh run view <run-id>
Phase 3: é¨ç½²åéªè¯
# 1. å¥åº·æ£æ¥
curl -s https://your-app.vercel.app/api/health | jq
# 2. æ ¸å¿ API æµè¯
curl -s https://your-app.vercel.app/api/your-endpoint | jq
# 3. Playwright åè½æµè¯
npx playwright test --project=chromium tests/e2e/smoke.spec.ts
Vercel é¨ç½²éªè¯æ¸ å
ð é¨ç½²ç¶ææ£æ¥
# æ¥çé¨ç½²å表
vercel ls
# æ¥çé¨ç½²è¯¦æ
vercel inspect <deployment-url>
# æ¥çé¨ç½²æ¥å¿
vercel logs <deployment-url>
ð Vercel ä»ªè¡¨æ¿æ£æ¥
-
Deployments 页é¢
- ç¡®è®¤ææ°é¨ç½²ç¶æä¸º “Ready”
- æ£æ¥æå»ºæ¶é´æ¯å¦æ£å¸¸
- æ¥çæ¯å¦ææå»ºè¦å
-
Functions 页é¢
- 确认 Serverless Functions æ£å¸¸è¿è¡
- æ£æ¥å½æ°æ§è¡æ¶é´
- æ¥çé误ç
-
Analytics 页é¢
- æ£æ¥è¯·æ±æåç
- æ¥çååºæ¶é´åå¸
- 确认æ å¼å¸¸æµé
â ï¸ å¸¸è§ Vercel é¨ç½²é®é¢
| é®é¢ | åå | è§£å³æ¹æ¡ |
|---|---|---|
| æå»ºå¤±è´¥ | ä¾èµé®é¢ | æ£æ¥ package.jsonï¼æ¸
é¤ç¼åéè¯ |
| ç¯å¢åé缺失 | æªåæ¥ | vercel env add <name> |
| 彿°è¶ æ¶ | æ§è¡æ¶é´è¿é¿ | ä¼åä»£ç æå级å¥é¤ |
| 404 é误 | è·¯ç±é ç½® | æ£æ¥ vercel.json åè·¯ç±è®¾ç½® |
| CORS é误 | è·¨åé ç½® | æ·»å æ£ç¡®ç CORS 头 |
ð ï¸ Vercel éªè¯èæ¬
# 使ç¨å
ç½®èæ¬
bash .kiro/skills/deployment-verification/scripts/verify-vercel.sh
GCP Cloud Run é¨ç½²éªè¯æ¸ å
ð é¨ç½²ç¶ææ£æ¥
# æ¥çæå¡å表
gcloud run services list
# æ¥çæå¡è¯¦æ
gcloud run services describe <service-name> --region=<region>
# æ¥çæè¿ä¿®è®¢çæ¬
gcloud run revisions list --service=<service-name>
# æ¥çæ¥å¿
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=<service-name>" --limit=50
ð GCP Console æ£æ¥
-
Cloud Run æå¡é¡µé¢
- 确认æå¡ç¶æä¸ºç»¿è²
- æ£æ¥ææ°ä¿®è®¢çæ¬
- æ¥çæµéåé
-
Metrics 页é¢
- 请æ±è®¡æ°åå»¶è¿
- 容å¨å®ä¾æ°
- å åå CPU 使ç¨ç
-
Logs 页é¢
- åºç¨æ¥å¿
- ç³»ç»æ¥å¿
- é误æ¥å¿
â ï¸ å¸¸è§ GCP é¨ç½²é®é¢
| é®é¢ | åå | è§£å³æ¹æ¡ |
|---|---|---|
| é¨ç½²å¤±è´¥ | éåæå»ºé误 | æ£æ¥ Dockerfile |
| å¯å¨å¤±è´¥ | 端å£é ç½® | ç¡®ä¿çå¬ $PORT |
| å·å¯å¨æ ¢ | 容å¨åå§å | ä¼åå¯å¨æ¶é´æè®¾ç½®æå°å®ä¾ |
| å åä¸è¶³ | èµæºéå¶ | å¢å å åé ç½® |
| æéé误 | IAM é ç½® | æ£æ¥æå¡è´¦å·æé |
ð ï¸ GCP éªè¯èæ¬
# 使ç¨å
ç½®èæ¬
bash .kiro/skills/deployment-verification/scripts/verify-gcp.sh <service-name> <region>
ç¯å¢åéåæ¥æ£æ¥
ð ç¯å¢åéåç±»
| ç±»å« | ç¤ºä¾ | åæ¥è¦æ± |
|---|---|---|
| API å¯é¥ | GEMINI_API_KEY, OPENAI_API_KEY |
å¿ é¡»åæ¥ |
| æ°æ®åº | DATABASE_URL, SUPABASE_* |
å¿ é¡»åæ¥ |
| ç¬¬ä¸æ¹æå¡ | LIVEKIT_*, STRIPE_* |
å¿ é¡»åæ¥ |
| åºç¨é ç½® | NEXT_PUBLIC_* |
å¿ é¡»åæ¥ |
| å¼åä¸ç¨ | DEBUG, LOG_LEVEL |
å¯é忥 |
ð åæ¥æ£æ¥æµç¨
# 1. å¯¼åºæ¬å°ç¯å¢åéå
grep -E "^[A-Z]" .env | cut -d= -f1 | sort
# 2. å¯¼åº Vercel ç¯å¢åéå
vercel env ls
# 3. æå¨å¯¹æ¯æä½¿ç¨èæ¬
# åè: references/env-sync-checklist.md
â ï¸ å¸¸è§éæ¼çç¯å¢åé
# AI æå¡
GEMINI_API_KEY
OPENAI_API_KEY
ANTHROPIC_API_KEY
# 宿¶éä¿¡
LIVEKIT_URL
LIVEKIT_API_KEY
LIVEKIT_API_SECRET
# æ°æ®åº
DATABASE_URL
SUPABASE_URL
SUPABASE_ANON_KEY
SUPABASE_SERVICE_ROLE_KEY
# 认è¯
NEXTAUTH_SECRET
NEXTAUTH_URL
# æ¯ä»
STRIPE_SECRET_KEY
STRIPE_WEBHOOK_SECRET
å¥åº·æ£æ¥ç«¯ç¹éªè¯
ð æ åå¥åº·æ£æ¥ç«¯ç¹
// /api/health.ts
export async function GET() {
try {
// æ£æ¥æ°æ®åºè¿æ¥
await db.query('SELECT 1');
// æ£æ¥å¤é¨æå¡
const services = {
database: 'ok',
cache: await checkCache(),
external: await checkExternalAPI(),
};
return Response.json({
status: 'healthy',
timestamp: new Date().toISOString(),
services,
});
} catch (error) {
return Response.json({
status: 'unhealthy',
error: error.message,
}, { status: 503 });
}
}
ð å¥åº·æ£æ¥éªè¯
# åºæ¬å¥åº·æ£æ¥
curl -s https://your-app.vercel.app/api/health | jq
# 颿ååº
{
"status": "healthy",
"timestamp": "2025-01-01T00:00:00.000Z",
"services": {
"database": "ok",
"cache": "ok",
"external": "ok"
}
}
# 带è¶
æ¶çæ£æ¥
curl -s --max-time 10 https://your-app.vercel.app/api/health
# æ£æ¥ååºç¶æç
curl -s -o /dev/null -w "%{http_code}" https://your-app.vercel.app/api/health
æ éææ¥æå
ð´ é¨ç½²å¤±è´¥
# 1. æ¥çæå»ºæ¥å¿
vercel logs <deployment-url> --output=raw
# 2. æ¬å°å¤ç°
npm run build 2>&1 | tee build.log
# 3. æ£æ¥ä¾èµ
npm ls --depth=0
npm audit
# 4. æ¸
é¤ç¼åéè¯
vercel --force
ð¡ é¨ç½²æåä½åè½å¼å¸¸
# 1. æ£æ¥ç¯å¢åé
vercel env ls
# 2. æ£æ¥å½æ°æ¥å¿
vercel logs <deployment-url> --follow
# 3. æ£æ¥ç½ç»è¯·æ±
# ä½¿ç¨æµè§å¨ DevTools Network 颿¿
# 4. Playwright è°è¯
npx playwright test --debug
ð æ§è½é®é¢
# 1. æ£æ¥å·å¯å¨æ¶é´
curl -w "@curl-format.txt" -s https://your-app.vercel.app/api/health
# 2. æ£æ¥å½æ°æ§è¡æ¶é´
# Vercel Dashboard > Functions > æ¥çæ§è¡æ¶é´
# 3. æ£æ¥èµæºä½¿ç¨
# GCP Console > Cloud Run > Metrics
Examples
Example 1: Vercel é¨ç½²éªè¯
åºæ¯: æ¨é代ç å° main 忝åéªè¯é¨ç½²
Steps:
# 1. æ¨é代ç
git push origin main
# 2. çå¾
é¨ç½²å®æ (约 1-2 åé)
sleep 120
# 3. æ£æ¥é¨ç½²ç¶æ
vercel ls --limit 1
# 4. å¥åº·æ£æ¥
curl -s https://your-app.vercel.app/api/health | jq
# 5. Playwright åè½æµè¯
npx playwright test tests/e2e/smoke.spec.ts
Expected Output:
â
é¨ç½²ç¶æ: Ready
â
å¥åº·æ£æ¥: 200 OK
â
åè½æµè¯: å
¨é¨éè¿
Example 2: ç¯å¢åé忥
åºæ¯: æ·»å æ°ç API å¯é¥
Steps:
# 1. æ·»å å°æ¬å° .env
echo "NEW_API_KEY=xxx" >> .env
# 2. æ·»å å° Vercel
vercel env add NEW_API_KEY production
# è¾å
¥å¼: xxx
# 3. éªè¯åæ¥
vercel env ls | grep NEW_API_KEY
# 4. éæ°é¨ç½²ä»¥åºç¨æ°åé
vercel --prod
Example 3: ææ¥é¨ç½²å¤±è´¥
åºæ¯: é¨ç½²å¤±è´¥ï¼éè¦ææ¥åå
Steps:
# 1. æ¥çé¨ç½²ç¶æ
vercel ls --limit 5
# 2. æ¥ç失败æ¥å¿
vercel logs <failed-deployment-url>
# 3. æ¬å°å¤ç°
npm run build
# 4. ä¿®å¤é®é¢åéæ°é¨ç½²
git add .
git commit -m "fix: ä¿®å¤æå»ºé误"
git push origin main
References
references/env-sync-checklist.md: ç¯å¢åéåæ¥æ£æ¥æ¸ åscripts/verify-vercel.sh: Vercel é¨ç½²éªè¯èæ¬scripts/verify-gcp.sh: GCP Cloud Run éªè¯èæ¬
Maintenance
- Sources: Vercel 宿¹ææ¡£, GCP Cloud Run ææ¡£, 项ç®å®è·µç»éª
- Last Updated: 2025-01-01
- Known Limits:
- èæ¬ä¾èµ
vercelCLI ågcloudCLI - æäºéªè¯éè¦ç¸åºçè®¿é®æé
- èæ¬ä¾èµ