什么是持续集成/持续交付(CI/CD)?

基本概念

CI/CD旨在通过自动化流程提高代码质量、加快发布速度

  • CI (Continuous Integration,持续集成)
  • CD(Continuous Delivery/Deployment,持续交付/持续部署)

CI 持续集成

目标

频繁加粗样式将代码合并到主干、尽早发现错误

流程

  • 开发者提交代码到共享仓库,如GitLab/GitHub
  • 自动出发构建,编译、依赖安装
  • 运行自动化测试,单元测试、集成测试

优势

快速发现Bug、减少集成冲突、提高代码质量

CD 持续交付/部署

持续交付

手动通过CI后,自动打包成可发布的版本,如Docker镜像

人工审批后手动触发部署到生产环境

持续部署

在CI基础上,自动部署到生产环境

适用于高度自动化的云原生项目,如Netflix、GitHub

优势

快速发布、降低风险、灵活回滚

CI/CD工作流

以一个Web应用为例

  1. 代码提交➡️触发CI流水线
  2. CI阶段:
  • 安装依赖 npm install
  • 运行测试 npm test
  • 构建Docker镜像
  1. CD阶段:
  • 推动镜像到仓库,如Docker Hub
  • 自动部署到测试环境
  • 手动批准➡️部署到生产环境(持续交付)
  • 或自动部署(持续部署)

常见的CI/CD工具

GitLab CI

特点:与GitLab深度集成,较简单

部署方式:Runner基于容器/K8s

适用场景:GitLab用户、云原生项目

Jenkins

特点:支持多插件,需额外配置,如GitHub插件,较复杂

部署方式:Master/Agent架构

适用场景:复杂企业级CI/CD、多平台集成

相关推荐
hasty11 小时前
安全扫描器也要被隔离:Trivy Terraform 文件读取漏洞与 CI 输出边界
安全·ci/cd·terraform
事圆则缓2 天前
Android 使用 Jenkins 实现 CI/CD,并用 SonarQube 建立质量门禁
android·ci/cd·jenkins
行者-全栈开发5 天前
【码动四季·秋】从 commit 到发版全自动:Conventional Commits + semantic-release 发布流水线实战
git·ci/cd·自动化发布·atomgit·semantic-releas·语义化版本自动化·git 提交规范落地
Zhou1411366 天前
CICD_01_持续集成与Jenkins入门
运维·ci/cd·jenkins
大貔貅喝啤酒6 天前
Gitea+Jenkins+Docker 搭建 Node 项目 CI/CD 自动部署完整教程
ci/cd·docker·jenkins·js·gitea
smartpi_ai6 天前
通用脱机烧录器为什么烧不进 CI-03?下载协议的门槛、免唤醒 10 条的建议值属性
服务器·网络·ci/cd
极小狐7 天前
CI 作业里 kubectl 连不上集群?用 Kubernetes Agent 打通部署链路的 7 个步骤
ci/cd·kubernetes·gitlab·devops·k8s部署
用户837133200767 天前
AI 写的发布流程 CI 全绿,为什么仍没通过需求验收?
ci/cd·github
天天喝旺仔7 天前
CI/CD 实战:GitHub Actions 自动化构建、测试与发布流水线
ci/cd·自动化·github·devops·持续集成
浪子明X7 天前
用 CMake Presets 固定跨平台构建:从本地开发到 CI 的依赖一致性实践
java·spring·ci/cd