用途
该技能用于支持 GitHub Actions 上的 CI/CD 流水线搭建、调试与优化工作。它把自己设定为专注 CI/CD 流水线设计的 DevOps 工程师角色,目标是在用户设置、调试或优化流水线时提供指导,帮助流水线更可靠、更快、更安全,从而尽早捕获问题并放心部署。触发场景包括用户提到 GitHub Actions、CI/CD、workflow、pipeline、deploy、release 等相关词汇。
主要能力
流水线设计原则
技能给出五条设计原则:
- 失败要快(Fail fast):先运行成本最低的检查,顺序为 lint → type-check → unit tests → integration → e2e。
- 激进缓存(Cache aggressively):缓存依赖、构建产物和 Docker 层。
- 并行执行(Parallelize):相互独立的 job 并发运行。
- 最小化密钥暴露:尽可能使用 OIDC 而非长期有效的令牌。
- 保证可复现:固定 action 版本、锁定依赖。
标准工作流模板
技能提供两类标准模板。
PR 检查流水线(CI):在 pull_request 到 main 分支时触发,使用 concurrency 分组 ci-${{ github.ref }} 并设置 cancel-in-progress 取消进行中的旧运行。包含 lint job:检出代码、用 setup-node 指定 node-version-file 与 pnpm 缓存、执行 pnpm install --frozen-lockfile、pnpm lint 和 pnpm type-check。包含 test job:依赖 lint,使用 matrix 分片(shard 1、2、3),执行 pnpm install --frozen-lockfile 与 pnpm test --shard=${{ matrix.shard }}/3。
部署流水线(Deploy):在 push 到 main 分支时触发,运行于 ubuntu-latest,使用 environment: production,并设置 permissions: id-token: write 以支持 OIDC。步骤包括检出、安装依赖、构建、测试,部署步骤取决于所用平台。
常见问题与修复
技能归纳了几类问题及处理方向:
- 流水线过慢:启用依赖缓存(actions/cache 或 setup-node 内置缓存)、用 concurrency 取消过期运行、用 matrix 对大型测试套件分片、用 paths 过滤器跳过无关工作流。
- 测试不稳定:对已知不稳定测试添加失败重试(但要解决根因)、用 --bail 在首个失败测试时快速失败、把确定性测试与集成测试分离。
- 安全问题:将 action 固定到 SHA 而非标签(如 uses: actions/checkout@abc123)、用 permissions 限制令牌范围、绝不在日志中回显密钥、对生产部署使用环境保护规则、用 github/codeql-action 或 snyk 扫描依赖。
- Monorepo:按包使用 paths 过滤器、用 dorny/paths-filter 做条件 job、在 .github/workflows/ 中共享可复用工作流。
调试工作流失败
技能给出的排查建议包括:阅读完整错误日志而不只是最后一行;判断是代码问题还是 CI 环境问题;常见的仅 CI 失败原因有缺少环境变量、操作系统行为差异、网络超时;可用 act 在本地测试工作流;按需添加 --verbose 或调试日志。
使用方式
该技能以文字指导与代码示例形式呈现,包含可直接参考的 YAML 工作流模板。用户在与 GitHub Actions CI/CD 相关的问题上下文中调用该技能,即可获得上述原则、模板与排查建议。资料未提供具体的安装命令、调用接口或集成方式。
适用场景
适用于需要搭建、调试或优化 GitHub Actions 流水线的场景,例如设计 PR 检查流水线、部署流水线,处理流水线缓慢、测试不稳定、密钥与权限安全、monorepo 条件触发等问题,以及排查仅发生在 CI 环境中的失败。
限制
资料未说明该技能支持的平台范围、版本要求、是否额外收费、具体集成方式与性能指标;示例中的部署步骤明确取决于用户所用平台,技能本身未指定部署目标。