SuperAPI AI 工具集

ci-cd-pipelines

部署与运维

查看项目

更新于 10-15 11:00

技能介绍

用途

本技能是一份跨平台的 CI/CD 流水线构建、配置与优化指南,帮助用户在 GitLab CI、Jenkins、CircleCI 等平台上设计并落地持续集成与持续部署流程。当用户提出“搭建 CI/CD”“创建流水线”“配置 Jenkins”“设置 GitLab CI”等需求时适用。

对于 GitHub Actions,资料中明确建议参考专门的 github-actions 技能,该技能深入覆盖工作流、矩阵构建、缓存、密钥和可复用操作。

核心概念

  • 持续集成(CI):每次提交自动构建并测试代码。
  • 持续交付(CD):自动准备可部署的发布版本(手动触发)。
  • 持续部署(CD):自动部署每一个通过流水线的变更。

流水线结构:

  • 提交 -> 构建 -> 测试 -> 扫描 -> 暂存 -> 部署 -> 监控
  • 阶段(Stages):作业的逻辑分组(构建、测试、部署)。
  • 作业(Jobs):阶段内的独立工作单元。
  • 步骤(Steps):作业内的命令或操作。
  • 制品(Artifacts):作业产出并在阶段间传递的文件。
  • 触发器(Triggers):启动流水线的事件(推送、合并、定时、手动)。

流水线设计原则

  • 快速失败:先运行快速检查(lint、语法),再运行慢速测试。
  • 并行化:并发运行相互独立的作业。
  • 积极缓存:避免重复构建未变更的依赖。
  • 最小化制品:只传递下游作业所需的内容。
  • 幂等部署:重复执行部署得到相同结果。

GitLab CI/CD

资料提供了基础 .gitlab-ci.yml 示例,包含 build、test、scan、deploy 四个阶段,使用 node 镜像、缓存 node_modules 与 .npm,构建产物 dist/ 保留 1 小时。测试阶段包含单元测试(带覆盖率与 JUnit 报告)和集成测试(使用 postgres:16、redis:7 服务)。扫描阶段包含 SAST(semgrep)与依赖扫描(npm audit),均允许失败。部署阶段包含 staging 与 production,production 为手动触发。

还介绍了规则与条件(rules、merge_request_event、trigger 下游流水线)以及矩阵构建(parallel.matrix 组合 NODE_VERSION 与 DB)。

Jenkins

资料提供声明式 Jenkinsfile 示例,包含 agent、environment、options(超时、禁止并发构建、日志轮转、时间戳)、parameters(部署环境选择、跳过测试),阶段涵盖 Checkout、Install、Lint & Format、Test(并行单元与集成测试)、Build Docker Image、Push Image、Deploy(input 审批、withCredentials、kubectl set image),post 部分包含成功/失败 Slack 通知与清理工作区。

同时提供脚本式 Jenkinsfile 示例,使用 node('docker')、try/catch/finally、parallel、docker.build、input、emailext 等。

还介绍 Jenkins 共享库:vars/standardPipeline.groovy 定义可复用流水线,通过 @Library 引入并传入 buildCommand、testCommand 等参数。

CircleCI

资料提供 .circleci/config.yml 示例,version 2.1,使用 node、docker、slack orb,定义 node-executor 与 node-with-db 执行器,install-deps 命令,以及 lint、unit-test(parallelism 4、按时间拆分测试文件)、integration-test(等待数据库、迁移、集成测试)、build-and-push(远程 Docker、构建并推送镜像)、deploy(参数化环境、Slack 通知)等作业。工作流 build-test-deploy 定义依赖关系,包含 hold-production 审批步骤。

流水线设计模式

  • 扇出/扇入:并行运行多个作业,再汇聚到单个下游作业。资料给出 GitLab CI 示例,包含 build、test-unit、test-e2e、test-performance、merge-and-report、deploy。
  • 矩阵构建:同时跨多个版本、平台或配置进行测试。资料给出 CircleCI 矩阵示例,组合 node-version 与 os。
  • 条件流水线(Monorepo 策略):仅当相关文件变更时触发作业。资料给出 GitLab CI 示例,frontend、backend、infrastructure 分别根据 changes 规则触发。

缓存策略

  • 分层缓存:资料给出 GitLab CI 示例,按 package-lock.json 缓存 node_modules,按作业名缓存 .next/cache 与 dist,测试作业使用 policy: pull 只读缓存。
  • Docker 层缓存:资料给出 CircleCI 示例,使用 machine 执行器并开启 docker_layer_caching。

适用场景

适用于需要在多平台上搭建、配置或优化 CI/CD 流水线的开发与运维场景,包括构建测试部署流程、并行与矩阵测试、安全扫描、多环境部署、Monorepo 条件触发以及缓存优化。

限制

资料未提供各平台的具体收费、价格、版本要求或性能数据。GitHub Actions 的详细内容需参考专门的 github-actions 技能。