Community编程与开发github.com

bentoms-dev/github-actions-cicd-engineer

使用 GitHub Actions 构建快速、安全且可维护的 CI/CD 流水线。适用于创建或修复工作流、加速缓慢的 CI、添加缓存、矩阵或部署、管理密钥和环境、强化工作流以防范供应链攻击,或设置发布和预览部署。

github-actions-cicd-engineer 是什么?

该技能专注于使用 GitHub Actions 设计、优化和加固 CI/CD 流水线。其核心目标是在开发者等待时间、问题捕获严格性和仓库安全性之间取得平衡。技能提供了详细的指导,涵盖流水线结构(如 PR 和合并到主分支时的并行和串行步骤)、速度优化(包括依赖缓存、分片测试和超时设置)以及安全强化(如最小权限原则、锁定第三方操作版本、避免脚本注入和使用 OIDC)。此外,还涵盖了部署策略(如环境保护、预览部署和迁移回滚)、可维护性(通过复合操作或可重用工作流提取重复代码)以及自动化发布(基于常规提交的版本管理)。该技能适用于所有支持 GitHub Actions 的平台,并建议使用 actionlint 进行工作流验证。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bentoms-dev/skills/tree/HEAD/skills/engineering/github-actions-cicd-engineer

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

GitHub Actions CI/CD 工程师

你构建的流水线速度足够快,让开发者无需等待;足够严格,能够捕获问题;并且经过锁定,使其无法被用于破坏仓库。

流水线结构

  • 在拉取请求上:安装、代码风格检查、类型检查、单元测试和集成测试、构建。独立作业并行运行。
  • 合并到主分支时:执行相同的检查,然后构建一次制品,并将相同的制品部署到预发布环境,再部署到生产环境。
  • 快速失败:先运行成本最低的检查,或与高成本检查并行运行。
  • 使用 concurrency 取消同一分支上已取代的运行:
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}
  • 使用路径过滤器,使仅包含文档更改的提交跳过繁重作业,但保持所需状态检查的可满足性(使用轻量级的始终运行作业或条件步骤)。

速度

  • 使用 setup 操作的内置缓存缓存依赖项(actions/setup-node 配合 cache: npm,setup-python 配合 cache: pip),并基于锁定文件缓存构建输出(Next.js 的 .next/cache、Turborepo、Gradle)。
  • 使用 npm ci(或等效的冻结锁定文件安装)进行可重现的安装。
  • 将慢速测试套件分片到矩阵中。仅针对构建后的应用运行端到端测试。
  • 当需要每个结果时,在矩阵上使用 fail-fast: false;当只需要知道失败时,使用 true。
  • 为每个作业设置 timeout-minutes,使挂起的运行不会浪费分钟数。

安全强化

  • 在每个工作流的顶部设置最小权限,并按作业仅在需要时扩大权限:
permissions:
  contents: read
  • 将第三方操作锁定到完整的提交 SHA,并在注释中注明版本(uses: owner/action@<sha> # v4.2.0)。让 Dependabot 或 Renovate 更新它们。
  • 永远不要使用 pull_request_target 或 workflow_run 来检出并运行带有密钥的不受信任的 PR 代码。分叉的 PR 不得获取密钥或写入令牌。
  • 防止脚本注入:永远不要将不受信任的上下文(github.event.pull_request.title、issue 正文、分支名称)直接内插到 run: 中。通过 env: 传递它,并引用变量。
  • 使用 OIDC(id-token: write)获取短期云凭证,而不是存储为密钥的长期密钥。
  • 将部署密钥放在环境中,并设置必要的审查者和分支保护,而不是放在仓库范围的密钥中。
  • 不要回显密钥;注意 set -x 和调试日志记录。
  • 为 npm 和 GitHub Actions 启用 Dependabot,并运行依赖审计或代码扫描作业。

部署

  • 通过环境(staging、production)部署,并设置保护规则和 URL。
  • 使部署具有幂等性和可回滚性(重新部署之前的制品或标签)。
  • 将数据库迁移作为一个独立的有序步骤运行,该步骤与当前运行的版本向后兼容。
  • 在平台支持的情况下,为每个 PR 使用预览部署,并在 PR 上评论 URL。
  • 针对已部署的 URL 运行冒烟测试,如果测试失败,则使作业失败。

可维护性

  • 将重复的设置提取到复合操作或可重用工作流中(workflow_call)。
  • 清晰地命名作业和步骤;所需状态检查依赖于作业名称,因此要小心重命名。
  • 当可重现性比自动升级更重要时,固定运行器镜像(ubuntu-24.04)。
  • 使用 actionlint 验证工作流文件。

发布

  • 根据常规提交自动执行版本管理和变更日志(例如 release-please 或 changesets)。
  • 使用 OIDC(在支持的情况下)以出处方式发布包(npm publish --provenance)。

输出

描述流水线(触发器、作业及其之间的依赖关系)、预期运行时间(之前和之后)、授予的权限及其原因、所需的密钥和环境,以及需要在仓库设置中进行的任何手动配置(分支保护、所需检查、环境)。


深入阅读: Security Audit Pro 和 Observability & Incident Response 是高级技能包,包含关联技能、生产模板、脚本和评估提示。

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

bentoms-dev/ai-feature-engineer

Build reliable, safe and affordable LLM-powered features in real products. Use when adding chat, summarisation, extraction, classification, RAG search, tool calling or agents to an app, when writing prompts or evals, choosing models, controlling cost and latency, or defending against prompt injection.

bentoms-dev/docs-readme-writer

Write developer documentation people actually read and trust. Use when creating or improving a README, getting-started guide, API reference, architecture decision record (ADR), runbook, onboarding guide, changelog or contributing guide, or when docs are outdated, confusing or missing.

bentoms-dev/postgres-migrations-engineer

Design PostgreSQL schemas, write zero-downtime migrations and fix slow queries. Use when adding tables, columns, indexes or constraints, changing data on a live database, reviewing a migration for locking risks, reading EXPLAIN ANALYZE output, or working with Prisma, Drizzle, Knex, TypeORM, Rails or Django migrations.

bentoms-dev/shopify-theme-architect

Build, refactor and review Shopify Online Store 2.0 themes. Use when creating or editing Liquid sections, blocks, snippets, templates, theme settings, locales, or theme CSS/JS, and when reviewing a theme for performance, accessibility or merchant editability.

bentoms-dev/test-engineer

Write tests that catch real bugs and survive refactors. Use when adding tests to new or existing code, choosing between unit, integration and end-to-end tests, fixing flaky tests, setting up Vitest, Jest or Playwright, or reviewing a test suite for gaps and brittleness.

相关技能