CircleCI CI/CD
云 CI/CD,.circleci/config.yml、orb 和并行。
CI/CD进阶
为什么
CircleCI 提供快速构建,Docker 支持、orb(可复用包)和并行。适合想要托管 CI 无基础设施的团队。
DORA 2024 DevOps 状态报告显示精英团队部署频率比低绩效团队高 973 倍。带自动化测试的 CI/CD 管道将变更失败率降至 5-15%,而手动部署为 40-60%。
何时使用
想要托管 CI 良好 Docker 支持用 CircleCI。成本敏感避免(免费层有限)。
如何做
1. 配置 — .circleci/config.yml
2. Orb — 可复用包(node、aws、gcp)
3. 执行器 — docker、machine 或 macos
4. 工作流 — 作业配 requires
5. 缓存 — restore_cache/save_cache
6. 并行 — parallelism 测试拆分
7. 上下文 — 共享密钥
示例
# .circleci/config.yml
version: 2.1
orbs: { node: circleci/[email protected] }
jobs:
test:
docker: [{ image: cimg/node:20.0 }]
steps:
- checkout
- node/install-packages
- run: npm test
deploy:
docker: [{ image: cimg/node:20.0 }]
steps:
- checkout
- run: npx vercel --prod --token $VERCEL_TOKEN
workflows:
version: 2
build-test-deploy:
jobs:
- test
- deploy:
requires: [test]
filters: { branches: { only: [main] } }
常见问题
- ⚠构建慢 — 无缓存,依赖用 restore_cache/save_cache
- ⚠信用用尽 — 免费层有限,并行快速用信用
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓常见任务用 orb — node、aws、gcp orb 省配置
- ✓测试拆分用 parallelism — 跨执行器拆测试加速
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求