원클릭으로
ci-cd-pipeline
CI/CD 流水线设计与实现,覆盖 GitHub Actions / GitLab CI / Jenkins。标准阶段:lint → test → build → scan → deploy。关注流水线性能、安全门禁、环境隔离。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
CI/CD 流水线设计与实现,覆盖 GitHub Actions / GitLab CI / Jenkins。标准阶段:lint → test → build → scan → deploy。关注流水线性能、安全门禁、环境隔离。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。
设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。
设计 API 错误码和错误结构时使用。适用于错误响应规范、调用方错误处理、调试可观测。优先使用 RFC 7807 Problem Details + 业务错误码 + 调用方处理建议。
设计幂等接口和重试策略时使用。适用于支付、扣减、订单、关键写操作。优先使用 Idempotency-Key + 业务去重键 + 并发冲突处理(ETag/版本号)。
输出 OpenAPI 契约和 Mock 服务时使用。适用于 API 设计的最后一步、给前端/后端/QA 的交付。优先使用 OpenAPI 3.1 + Mock 数据覆盖所有路径 + 详细的下游交接清单。
设计列表接口的分页、筛选、排序、搜索时使用。适用于所有列表 API。优先使用 cursor 分页(大数据)或 offset 分页(小数据)+ 统一筛选/排序规范。
| name | ci-cd-pipeline |
| description | CI/CD 流水线设计与实现,覆盖 GitHub Actions / GitLab CI / Jenkins。标准阶段:lint → test → build → scan → deploy。关注流水线性能、安全门禁、环境隔离。 |
参考来源:GitHub Actions 官方文档、GitLab CI/CD 文档、Jenkins Pipeline 文档、DORA 指标、Continuous Delivery(Jez Humble)。
1. 快速反馈
lint + unit test < 5 分钟
全流水线 < 15 分钟
2. 失败即阻断
任何阶段失败 → 不进入下一阶段
安全扫描 HIGH → 阻断部署
3. 环境一致性
CI 环境 = 生产环境(容器化)
不依赖 CI runner 本地状态
4. 幂等可重试
每次运行结果一致
可安全重跑任何阶段
5. 最小权限
每阶段只授予必要权限
secrets 按环境隔离
6. 可观测
每步有日志 + 耗时
失败有明确错误信息
7. 主干开发
PR → CI → merge → CD
不维护长期分支
1. 确定流水线阶段
- lint(代码风格 + 静态分析)
- test(单元 + 集成)
- build(编译 + 打包 + 镜像)
- scan(安全扫描 + 许可证检查)
- deploy(按环境分级)
2. 选择 CI 平台
- GitHub Actions(GitHub 项目首选)
- GitLab CI(GitLab 项目首选)
- Jenkins(企业自建 / 复杂编排)
3. 设计触发规则
- PR:lint + test + build
- merge to main:全流程 + deploy staging
- tag:deploy production
- schedule:安全扫描 / 依赖更新
4. 配置缓存
- 依赖缓存(node_modules / .m2 / go mod)
- Docker 层缓存
- 构建产物缓存
5. 集成安全门禁
- SAST(Semgrep / CodeQL)
- 依赖扫描(Trivy / Snyk)
- 镜像扫描
- License 检查
6. 环境部署
- dev:自动部署(每次 merge)
- staging:自动部署 + 冒烟测试
- production:手动审批 / 自动(金丝雀)
7. 通知与报告
- 失败通知(Slack / Teams)
- 测试覆盖率报告
- 部署记录
| 阶段 | 工具 | 耗时目标 | 失败策略 |
|---|---|---|---|
| lint | ESLint / Prettier / golangci-lint | <1min | 阻断 |
| test | Jest / pytest / go test | <5min | 阻断 |
| build | Docker / webpack / go build | <3min | 阻断 |
| scan | Trivy / Semgrep / CodeQL | <3min | HIGH 阻断 |
| deploy-staging | Helm / ArgoCD / Terraform | <5min | 阻断 |
| smoke-test | Playwright / curl | <2min | 回滚 |
| deploy-prod | 同 staging + 审批 | <5min | 回滚 |
# .github/workflows/ci.yml 核心结构
name: CI/CD
on:
pull_request:
branches: [main]
push:
branches: [main]
tags: ['v*']
jobs:
lint:
runs-on: ubuntu-latest
steps: [checkout, setup, lint]
test:
runs-on: ubuntu-latest
needs: lint
steps: [checkout, setup, test, coverage-upload]
build:
runs-on: ubuntu-latest
needs: test
steps: [checkout, docker-build, push-to-registry]
scan:
runs-on: ubuntu-latest
needs: build
steps: [trivy-scan, upload-sarif]
deploy-staging:
if: github.ref == 'refs/heads/main'
needs: [build, scan]
environment: staging
steps: [deploy, smoke-test]
deploy-prod:
if: startsWith(github.ref, 'refs/tags/v')
needs: [build, scan]
environment: production
steps: [deploy, verify]
□ 流水线总耗时 < 15 分钟
□ lint + test 阶段 < 5 分钟
□ 依赖缓存已配置
□ Docker 层缓存已配置
□ 安全扫描集成(SAST + 依赖 + 镜像)
□ HIGH/CRITICAL 漏洞阻断部署
□ secrets 使用平台原生管理(不硬编码)
□ 环境隔离(dev / staging / prod)
□ 生产部署需审批或自动金丝雀
□ 失败通知已配置
□ 测试覆盖率有门槛
□ 流水线本身有版本控制
□ 可重试 / 幂等
templates/github-actions-template.md — GitHub Actions 完整流水线模板上游:
containerization → 镜像构建步骤
infrastructure-as-code → 部署基础设施
下游:
kubernetes-orchestration → 部署目标
release-strategy → 发布策略执行
monitoring-alerting → 部署后验证
secrets-config → CI secrets 管理