用途
CI/CD Pipeline Builder 技能用于帮助用户构建稳健的 CI/CD 流水线,实现自动化测试、构建与部署。其内容覆盖 GitHub Actions、Vercel 集成、测试策略、部署模式以及安全最佳实践。当需要自动化构建、测试、部署或发布流程时可以使用本技能。
核心理念与流水线阶段
该技能强调的流水线原则包括:快速反馈(尽早失败、快速告知)、可复现(相同输入产生相同输出)、安全(保护密钥、验证依赖)以及可观测(清晰日志、状态可见)。流水线阶段划分为:触发 → 代码检查(Lint)→ 测试 → 构建 → 部署 → 验证。
主要能力
GitHub Actions 基础
提供基础工作流结构示例(.github/workflows/ci.yml),包含名称、触发条件(push 到 main/develop 分支、针对 main 的 pull_request)、并发控制(concurrency 分组与取消进行中的运行),以及 lint、test、build 三类作业,并使用 needs 定义依赖关系。示例中使用 actions/checkout@v4、actions/setup-node@v4(node-version 20、cache npm),并执行 npm ci、npm run lint、npm test、npm run build 等命令。
完整的 Next.js CI/CD 流水线
提供一个完整示例(.github/workflows/ci-cd.yml),定义 env 中的 NODE_VERSION、VERCEL_ORG_ID、VERCEL_PROJECT_ID,并划分多个作业:
- quality(代码质量):checkout、setup-node、npm ci、类型检查、lint、格式检查。
- test(测试):依赖 quality,运行 npm run test:ci,并通过 codecov/codecov-action@v3 上传覆盖率(token、files 为 ./coverage/lcov.info、fail_ci_if_error 为 false)。
- build(构建):依赖 quality、test,运行 npm run build,注入 NEXT_PUBLIC_SUPABASE_URL 与 NEXT_PUBLIC_SUPABASE_ANON_KEY,并用 actions/upload-artifact@v4 上传 .next 产物(retention-days 1)。
- e2e(端到端测试):依赖 build,安装 Playwright 浏览器(npx playwright install --with-deps chromium),下载构建产物,运行 npm run test:e2e,失败时上传 playwright-report。
- deploy-preview(预览部署):在 pull_request 事件下运行,使用 Vercel CLI(vercel pull、vercel build、vercel deploy --prebuilt),通过 github-script 在 PR 中评论预览地址。
- deploy-production(生产部署):在 main 分支 push 时运行,使用 Vercel CLI 进行生产构建与部署(vercel build --prod、vercel deploy --prebuilt --prod)。
测试策略
提供并行测试执行示例(test-parallel.yml),通过 strategy.matrix 设置 shard 1–4、fail-fast 为 false,运行 npm run test -- --shard=...,并有 merge-results 作业汇报结果。提供矩阵测试示例(matrix-test.yml),覆盖 os(ubuntu、macos、windows)与 node(18、20、22),并使用 exclude 排除特定组合。
数据库集成
提供带数据库的测试示例(test-with-db.yml),使用 postgres:15 服务容器(定义 POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB、端口 5432 以及健康检查选项),使用 supabase/setup-cli@v1,执行 supabase start、supabase db reset(设置 SUPABASE_DB_URL),运行 npm run test:integration(设置 DATABASE_URL、SUPABASE_URL、SUPABASE_ANON_KEY)。
发布自动化
提供发布工作流示例(release.yml),设置 permissions(contents、pull-requests 为 write),使用 google-github-actions/release-please-action@v4(release-type 为 node、package-name),并在 release_created 时执行 npm publish(使用 NODE_AUTH_TOKEN)。还提供变更日志生成示例(changelog.yml),在 release published 时使用 stefanzweifel/changelog-updater-action@v1 与 git-auto-commit-action@v5 更新并提交 CHANGELOG.md。
安全扫描
提供安全工作流示例(security.yml),触发条件包括 push、pull_request 到 main 以及每周定时(cron '0 0 * * 0')。作业包括:dependency-audit(npm audit --audit-level=high)、codeql(github/codeql-action/init@v3 与 analyze@v3,语言 javascript,需 security-events: write 权限)、secrets-scan(gitleaks/gitleaks-action@v2,使用 GITHUB_TOKEN)。
缓存策略
提供缓存构建示例(cached-build.yml),使用 actions/setup-node@v4 的 cache npm,并使用 actions/cache@v4 缓存 .next/cache(key 结合 runner.os、hashFiles package-lock.json 与源码文件 hash,定义 restore-keys)以及缓存 Playwright 浏览器(~/.cache/ms-playwright)。
环境管理
提供基于环境的部署示例(deploy.yml),在 main 与 develop 分支 push 时,根据 github.ref 选择 production 或 staging 环境及其 URL,并通过 vars.API_URL 与 secrets.API_KEY 注入配置。
工作流优化
提供智能 CI 示例(smart-ci.yml),使用 dorny/paths-filter@v3 检测 frontend、backend、docs 变更,并通过 needs.changes.outputs 决定是否运行 test-frontend、test-backend、deploy-docs。
通知与报告
提供通知示例(notify.yml),在 build 完成后(if: always())使用 slackapi/slack-github-action@v1 发送 Slack 消息,payload 中包含构建结果、仓库、分支、commit 与提交者信息,使用 SLACK_WEBHOOK_URL 环境变量。
使用方式
以上内容以工作流 YAML 示例形式给出,用户可参考这些示例在项目中配置 GitHub Actions 工作流、Vercel 部署、测试、发布、安全扫描、缓存与环境管理等环节。具体命令、action 版本与配置项均直接来自资料中的代码示例。
适用场景
适用于需要为项目搭建或完善 CI/CD 流水线的开发者,尤其是使用 GitHub Actions、Vercel、Next.js、Playwright、Supabase、Postgres 等技术栈,并希望覆盖代码质量、测试、构建、部署、发布、安全与通知等环节的场景。
限制
资料未提供该技能的具体安装方式、收费或价格信息、支持平台的完整清单,以及除示例外的其他使用步骤,相关内容暂未提供。