关于 building-cicd-pipelines
面向需要自动化构建与部署的开发者,生成 GitHub Actions、GitLab CI、Jenkins、CircleCI 和 Azure DevOps 的多阶段流水线配置,并涵盖测试、安全扫描、部署门禁与回滚。
主要功能
- 01生成多平台 CI/CD 配置
- 02定义测试、构建和部署阶段
- 03添加依赖缓存与矩阵构建
- 04配置密钥引用与生产审批
- 05校验流水线语法
适用场景
- 01为应用创建 CI/CD 流水线
- 02为多个运行环境配置矩阵测试
- 03为生产部署设置审批和健康检查回滚
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jeremylongshore/ tons-of-skills-marketplace --skill building-cicd-pipelines安装后在 Claude Code 中输入/building-cicd-pipelines确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/README.mdreferences/README.mdscripts/README.md详细介绍
构建 CI/CD 流水线
当前状态
!ls .github/workflows/*.yml .gitlab-ci.yml Jenkinsfile .circleci/config.yml 2>/dev/null || echo 'No CI/CD config found'
概述
为 GitHub Actions、GitLab CI、Jenkins、CircleCI 和 Azure DevOps 生成 CI/CD 流水线配置。创建多阶段工作流,涵盖 lint、测试、构建容器镜像、安全扫描,以及部署到预发布环境/生产环境,并包含适当的门禁和回滚机制。
前提条件
- 托管在受支持平台(GitHub、GitLab、Bitbucket、Azure DevOps)上的 Git 仓库
- 容器运行时(Docker)(如果要构建镜像)
- 已将目标部署环境的凭据配置为流水线机密
- 可在无头模式下运行的测试套件(
npm test、pytest、go test等) - 了解分支策略(主干开发、GitFlow 或环境分支)
说明
- 扫描项目中现有的 CI/CD 配置文件(
.github/workflows/、.gitlab-ci.yml、Jenkinsfile、.circleci/config.yml) - 确定应用技术栈:语言、框架、测试运行器、包管理器和部署目标
- 定义流水线阶段:
lint->test->build->security-scan->deploy-staging->integration-test->deploy-production - 生成流水线配置文件,并设置适当的触发条件(推送到 main、PR 事件、标签)
- 为依赖项(
node_modules、.pip-cache、Go 模块)添加缓存,以缩短构建时间 - 在适当情况下,为多个语言版本或操作系统目标配置矩阵构建
- 添加部署凭据、容器注册表令牌和 API 密钥的机密引用(切勿硬编码)
- 实施部署门禁:生产环境需要手动审批,健康检查失败时自动回滚
- 添加状态徽章和构建结果通知(Slack、电子邮件)
- 使用平台专用工具(
actionlint、gitlab-ci-lint)验证流水线语法
输出
- 流水线配置文件(
.github/workflows/*.yml、.gitlab-ci.yml、Jenkinsfile) - 用于容器构建的 Dockerfile(多阶段、最小化基础镜像)
- 流水线引用的部署脚本或 Kubernetes 清单
- 用于预发布环境和生产环境的特定环境变量文件
错误处理
| 错误 | 原因 | 解决方案 |
|---|---|---|
Pipeline triggered but no jobs run | 触发条件(路径、分支)不匹配 | 检查 on: / only: / rules: 过滤条件,并确认分支名称 |
Docker build failed: layer cache miss | 缓存键已更改或缓存存储已过期 | 使用基于内容的缓存键(hashFiles('**/package-lock.json')),并检查缓存后端 |
Secret not found | 机密名称不匹配,或未在流水线设置中配置 | 检查仓库/项目设置中的机密名称是否完全匹配(区分大小写) |
Deploy failed: unauthorized | 部署凭据已过期或不正确 | 轮换凭据、更新流水线机密,并检查 IAM 角色/服务账户权限 |
Tests pass locally but fail in CI | 环境差异(操作系统、node 版本、时区) | 在流水线配置中固定运行时版本;使用 matrix 跨环境测试 |
示例
- “为 Node.js 应用创建 GitHub Actions 工作流:使用 ESLint 进行 lint,使用 Jest 进行测试,构建 Docker 镜像,推送到 ECR,并在 PR 合并后部署到 EKS 预发布环境。”
- “生成 GitLab CI 流水线,包含并行测试任务、SAST 扫描和手动生产环境部署门禁。”
- “构建 Jenkins 流水线,在 Docker Agent 中运行 Python 测试,将覆盖率报告发布到 SonarQube,并通过 Terraform 部署。”
资源
- GitHub Actions:https://docs.github.com/en/actions
- GitLab CI/CD:https://docs.gitlab.com/ee/ci/
- Jenkins Pipeline:https://www.jenkins.io/doc/book/pipeline/
- CI/CD 最佳实践:https://martinfowler.com/articles/continuousIntegration.html
评论
支持 Markdown