关于 ci-cd-architecture
ci-cd-architecture 是用于设计 CI/CD 流水线和选择部署平台的技能,重点涵盖 GitHub Actions 安全、Bun 构建优化,以及从 MVP 到企业规模的部署模式。
主要功能
- 01设计 CI/CD 流水线阶段
- 02强化 GitHub Actions 权限与凭据安全
- 03优化 Bun 构建和缓存
- 04按项目需求比较部署平台
- 05涵盖容器构建与镜像扫描
适用场景
- 01规划 GitHub Actions 工作流
- 02为产品选择部署目标
- 03用 OIDC 保护 CI 云访问
- 04规划容器构建和扫描阶段
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill ci-cd-architecture安装后在 Claude Code 中输入/ci-cd-architecture确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/container-builds.mddeployment-patterns.mdgithub-actions.mdmonitoring.mdplatform-selection.md详细介绍
CI/CD 与部署
概述
涵盖 CI/CD 流水线设计、部署平台选择和生产基础设施。重点介绍采用强化安全措施(OIDC、权限范围控制、固定 Action 版本)的 GitHub Actions、Bun 优先的构建优化,以及从 MVP 到企业级的部署模式。
适用场景: 配置 GitHub Actions 工作流、选择部署目标、为云服务提供商配置 OIDC、优化 CI 性能、规划多环境流水线。
不适用场景: 应用级架构决策(使用特定框架的技能)、Kubernetes 集群管理(使用专用 IaC 工具)、云服务提供商控制台配置。
快速参考
| 需求 | 解决方案 |
|---|---|
| MVP 部署(< 1K 用户) | Vercel、Netlify、Railway、Cloudflare Pages |
| 成长期产品(1K-100K) | AWS Amplify、Cloud Run、Fly.io、Render |
| 企业级(100K+) | AWS ECS/EKS、GKE、DigitalOcean App Platform |
| 静态网站 | Vercel、Netlify、Cloudflare Pages |
| 全栈 + 数据库 | Railway、Render、AWS Amplify |
| 全球低延迟 | Cloudflare Workers、Vercel Edge、Fly.io |
| 合规性(HIPAA、SOC 2) | AWS、GCP、Azure |
| 从 CI 进行云身份验证 | OIDC 角色(绝不使用长期密钥) |
| 固定 Action 版本 | 固定到提交 SHA,而非标签 |
| Bun CI 缓存 | 使用 lockfile 作为键的 ~/.bun/install/cache |
| 流水线安全 | 使用 StepSecurity Harden-Runner 控制出站流量 |
| 容器构建 | 多阶段 Dockerfile:构建器阶段 + 运行时阶段 |
| Docker 层缓存 | 使用 --cache-from + actions/cache 缓存 buildx |
| 多平台构建 | 使用 docker buildx,目标平台为 linux/amd64,linux/arm64 |
| 镜像扫描 | 在推送前于流水线中使用 Trivy 或 Snyk |
| 推送到镜像仓库 | GHCR(ghcr.io)、ECR、Docker Hub |
| 流水线阶段 | 构建 → 测试 → 安全扫描 → 部署 |
| DORA:部署频率 | 按服务跟踪每天/每周的部署次数 |
| DORA:前置时间 | 从提交到生产环境的时间;目标 < 1 小时 |
| DORA:变更失败率 | 导致事故的部署百分比;目标 < 5% |
| DORA:MTTR | 平均恢复时间;目标 < 1 小时 |
常见错误
| 错误 | 正确做法 |
|---|---|
| 将长期有效的 AWS/GCP/Azure 密钥存储为 GitHub secrets | 使用具有 id-token: write 权限的 OIDC 角色,实现零信任云身份验证 |
| 将 GitHub Actions 固定到标签而非提交 SHA | 将第三方操作固定到完整提交 SHA,以防止供应链攻击 |
在工作流中将 permissions 保持为默认(宽泛)设置 | 在作业级别明确限定权限;默认设为 contents: read |
| 在每次分支推送时运行完整 CI | 使用 on.pull_request 筛选条件和基于路径的触发器,避免浪费计算资源 |
| 在产品与市场契合前过度设计基础设施 | 从托管平台(Vercel、Railway)入手;仅在需要时扩展到 AWS/GKE |
| 使用过时的操作版本(v3 或更早版本) | 使用当前主版本:checkout@v6、cache@v5、configure-aws-credentials@v5 |
仅缓存 bun.lockb,未考虑 bun.lock | Bun 1.2+ 使用基于文本的 bun.lock;根据项目使用的锁文件格式计算哈希 |
| 跳过 PR 的预览部署 | 每个 PR 都应获得一个预览 URL,以便在合并前进行测试 |
与其他技能的关系
如果有
github-actions技能,请将详细的工作流编写、矩阵策略和复合操作交由它处理。本技能涵盖 CI/CD 架构和平台选择;github-actions涵盖深入的工作流语法。 如果有deployment-strategy技能,请将部署模式选择(蓝绿、金丝雀、滚动)交由它处理。本技能涵盖平台选择和 CI 流水线机制。
委派
- 审计现有 CI 工作流的安全性和权限:使用
ExploreAgent 扫描工作流 YAML 文件,检查权限是否过宽、操作是否未固定版本,以及是否暴露了密钥 - 设置多环境部署流水线:使用
TaskAgent 创建 dev/staging/prod 工作流,并配置环境保护规则 - 规划从托管平台迁移到容器化基础设施:使用
PlanAgent 评估当前部署、制定迁移步骤并选择目标架构
参考资料
评论
支持 Markdown