SuperAPI AI 工具集

circleci

部署与运维

查看项目

更新于 10-15 11:54

技能介绍

CircleCI 是一个云原生 CI/CD 平台,用于构建、测试和部署应用。以下内容依据该技能文档整理,主要说明其配置方式与常用能力。

一、用途与适用时机 当需要设置 CircleCI 的 CI/CD 流水线、使用 orbs 实现可复用配置、通过缓存和并行优化构建时间、配置工作流与审批、以及管理 contexts 和密钥时,可使用本技能。

二、前提条件

  • CircleCI 账号已连接仓库
  • 已在 CircleCI 控制台启用项目
  • 具备基本 YAML 知识

三、配置文件 配置文件位于 .circleci/config.yml,使用版本 2.1。可在其中声明 orbs、executors、jobs 和 workflows。文档示例展示了 build、test、deploy 三个作业,以及一条 build-test-deploy 工作流:deploy 依赖 test,test 依赖 build,且 deploy 通过 filters 限定仅在 main 分支运行。构建作业使用 persist_to_workspace 保存 dist,部署作业使用 attach_workspace 恢复数据。

四、执行器 文档介绍了三类执行器:

  • Docker 执行器:可指定多个镜像(如 cimg/node:20.10 与 cimg/postgres:15.0),并可设置环境变量与工作目录。
  • Machine 执行器:使用虚拟机镜像(如 ubuntu-2204:current),可指定 resource_class。
  • macOS 执行器:指定 Xcode 版本与 resource_class(如 macos.m1.medium.gen1)。

五、缓存

  • 依赖缓存:使用 restore_cache 与 save_cache,以 checksum 文件内容作为缓存键(如 v1-deps-{{ checksum "package-lock.json" }})。
  • 多键缓存:可提供多个候选键按顺序匹配,例如包含分支、校验和以及回退键。

六、工作区 通过 persist_to_workspace 可在作业之间传递数据(如 dist、node_modules),后续作业使用 attach_workspace 恢复。

七、并行 通过 parallelism 设置并行度,结合 circleci tests glob 与 circleci tests split --split-by=timings 拆分测试文件,并用 store_test_results 存储测试结果。

八、工作流

  • 顺序作业:通过 requires 定义依赖关系。
  • 并行作业:多个测试作业同时依赖 build,再由 deploy 依赖这些测试作业。
  • 手动审批:使用 type: approval 设置 hold 作业。
  • 定时工作流:使用 triggers.schedule.cron 设置(如 "0 2 * * *")。
  • 分支与标签过滤:通过 filters 限定分支(如 main、正则 /feature-./)和标签(如 /^v./)。

九、Orbs orbs 用于复用配置,可声明在版本 2.1 配置中。文档列出常见 orbs:node、docker、aws-cli、aws-ecr、aws-ecs、gcp-cli、kubernetes、slack。示例展示了使用 aws-cli 与 kubernetes orb 执行 kubectl apply。

十、Docker 构建 使用 docker orb 时,可通过 setup_remote_docker 指定版本,再执行 docker/check、docker/build、docker/push,并使用 $CIRCLE_SHA1 作为标签。

十一、环境变量与密钥

  • 项目变量:在 CircleCI 项目设置的 Environment Variables 中设置。
  • Contexts:在工作流作业中通过 context 字段引用环境专属密钥(如 staging-secrets、production-secrets)。
  • 变量使用:可在 run 步骤的 environment 中定义变量,并在命令中引用(如 $S3_BUCKET)。

十二、制品与测试结果 使用 store_test_results 存储测试结果,使用 store_artifacts 存储制品(可指定 destination)。

十三、资源类 文档列出可用资源类:small(1 vCPU、2GB RAM)、medium(2 vCPU、4GB RAM,默认)、large(4 vCPU、8GB RAM)、xlarge(8 vCPU、16GB RAM)。

十四、常见问题

  • 缓存无法恢复:每次构建都缓存未命中。建议检查缓存键格式,确认校验和文件未变化。
  • 工作区附加失败:找不到持久化的工作区。建议确认 persist_to_workspace 作业已完成并检查路径。
  • Docker 层缓存:Docker 构建缓慢。建议在项目设置中启用 Docker Layer Caching(文档标注为付费功能)。

十五、最佳实践 文档建议:为常见任务使用 orbs;实施积极的缓存策略;使用工作区在作业间共享数据;使用并行拆分测试以加快构建;使用 contexts 管理环境专属密钥;定义可复用的执行器;存储测试结果以获得洞察。

十六、相关技能 文档列出相关技能:github-actions(GitHub CI/CD)、docker-management(容器构建)、aws-ecs-fargate(ECS 部署)。

需注意,文档未提供具体的收费标准、平台支持范围或效果承诺等信息,相关细节暂未提供。