本页面提供了持续集成和持续交付(CI/CD)流水线的概述,解释了DevOps背景下的核心概念、工具和实现方法。有关ArgoCD的GitOps实现的具体信息,请参阅 ArgoCD的GitOps。
CI/CD 流水线是自动化的工作流程,使团队能够可靠高效地构建、测试和部署代码变更。它们通过以一致、可重复的方式将开发活动与操作部署连接起来,成为现代软件交付实践的基石。
来源: .github/workflows/ci_workflow.yml scripts/run_ci.sh
持续集成是一种频繁地将代码变更集成到共享存储库中的实践,随后进行自动构建和测试。CI帮助团队在开发周期的早期发现和解决集成问题。
| 工具 | 类型 | 主要功能 |
|---|---|---|
| Jenkins | 自托管 | 可通过插件扩展,成熟的生态系统 |
| CircleCI | 云/自托管 | 配置简单,设置快速 |
| GitHub Actions | 云服务 | 与GitHub紧密集成,将工作流视为代码 |
| GitLab CI/CD | 云/自托管 | 集成到GitLab平台 |
| Travis CI | 云服务 | 配置简单,对开源友好 |
此存储库包含一个使用GitHub Actions的CI工作流,该工作流在拉取请求上运行以确保代码质量
来源: .github/workflows/ci_workflow.yml scripts/run_ci.sh
GitHub Actions 工作流文件定义了一个在Ubuntu上运行的CI作业
.github/workflows/ci_workflow.yml1-17
CI脚本执行两项主要检查
持续交付通过确保代码变更在通过CI检查后自动部署到测试或暂存环境来扩展CI。持续部署更进一步,自动部署到生产环境。
| 方法 | 工具 | 用例 |
|---|---|---|
| 传统CD | Jenkins, CircleCI, GitHub Actions | 通用应用程序部署 |
| GitOps | ArgoCD, Flux | Kubernetes原生部署 |
| 基础设施即代码 | Terraform, AWS CloudFormation | 基础设施配置 |
| 配置管理 | Ansible, Chef, Puppet | 系统配置 |
来源: topics/kubernetes/CKA.md400-500
此存储库包含一个使用AWS S3和Lambda进行事件驱动自动化的示例,该示例演示了一个可应用于CI/CD流水线的模式
来源: scripts/aws s3 event triggering/s3-lambda/s3-lambda.py scripts/aws s3 event triggering/aws_s3_event_trigger.sh
此模式适用于CI/CD工作流,其中特定事件触发流水线操作,例如
此示例中使用的Lambda函数
scripts/aws s3 event triggering/s3-lambda/s3-lambda.py1-38
将CI/CD流水线与Kubernetes集成时,通常会使用几种模式和工具
来源: topics/kubernetes/CKA.md400-454 topics/kubernetes/exercises/taints_101/exercise.md
对于生产环境,Kubernetes中可以实现不同的部署策略
| 策略 | 描述 | 实现 |
|---|---|---|
| 滚动更新 (Rolling Update) | 默认策略,逐步替换Pod | kubectl set image 或新的部署YAML |
| 蓝绿部署 | 运行两个相同的环境,切换流量 | 服务选择器更改 |
| 金丝雀部署 | 将部分流量路由到新版本 | 多个带有加权服务的部署 |
| A/B 测试 (A/B Testing) | 基于请求属性的路由 | 具有流量拆分的Ingress控制器 |
来源: topics/kubernetes/CKA.md460-500
来源: .github/workflows/ci_workflow.yml scripts/run_ci.sh
CircleCI是一个流行的持续集成和持续交付平台,用于实现DevOps实践。
| 概念 | 描述 |
|---|---|
| 管道 | 整个CI/CD配置(.circleci/config.yaml) |
| 工作流 | 多个作业的编排,定义它们的执行顺序 |
| 作业 (Jobs) | 用于执行一组步骤的容器 |
| 步数 | 要执行的实际命令 |
| Orbs | CircleCI配置的可重用包 |
来源: topics/circleci/README.md36-42
一个基本的CircleCI配置包括
一个简单的CircleCI配置示例
来源: topics/circleci/README.md62-80
CI/CD流水线通过自动化构建、测试和部署流程,成为现代软件交付实践的基石。有效实施CI/CD实践使团队能够更频繁地交付软件变更,并以更高的质量和更低的风险。
本存储库包含使用GitHub Actions和脚本的CI实施示例,以及可应用于CI/CD场景的事件驱动自动化模式示例。有关ArgoCD的GitOps方法的具体信息,请参阅关于 ArgoCD的GitOps 的专用页面。