CI/CD前世今生(持续集成、持续交付、持续部署、Jenkins、Github Actions)

文章目录

从手工作坊到软件工厂:CI/CD 的诞生

远古时代(2000年前后)

当时开发流程大概是:

text 复制代码
开发A
    ↓
开发B
    ↓
开发C
    ↓
手动上传服务器
    ↓
线上炸了

典型情况:

bash 复制代码
scp app.jar server:/opt/app

或者:

bash 复制代码
ftp upload

然后:

bash 复制代码
ssh server
./restart.sh

问题:

每个人环境不同

A电脑:

text 复制代码
Java 8

B电脑:

text 复制代码
Java 11

结果:

text 复制代码
我这里能运行
你那里为什么报错?

合并后才发现冲突

开发A:

python 复制代码
def pay():

开发B:

python 复制代码
def payment():

上线前才发现:

text 复制代码
Merge Conflict

发布依赖人工

运维:

text 复制代码
今天晚上11点发布

然后所有人等待:

text 复制代码
别动代码!

整个公司进入戒严状态。


第一次革命:持续集成(CI)

Martin Fowler 提出了一个理念:

不要等一个月再合并代码。

应该:

text 复制代码
每天合并
甚至每小时合并

于是出现:

Continuous Integration

持续集成

流程:

text 复制代码
提交代码
    ↓
自动构建
    ↓
自动测试
    ↓
发现问题

而不是:

text 复制代码
提交代码
    ↓
一个月后
    ↓
项目炸掉

CI 的核心哲学

不是:

text 复制代码
自动运行脚本

而是:

text 复制代码
尽可能早发现问题

英文里有个说法:

Shift Left

把问题往左移动。

时间线:

text 复制代码
开发 → 测试 → 上线

改成:

text 复制代码
编码时 → 发现问题

因为:

text 复制代码
越晚发现问题
修复成本越高

Jenkins 时代

大约 2010 年前后。

出现了:

Jenkins

它几乎统治了 CI 世界十几年。

当时流程:

text 复制代码
Git Push
    ↓
Jenkins
    ↓
编译
    ↓
测试
    ↓
发送邮件

Jenkins 本质:

text 复制代码
自动化任务调度器

例如:

groovy 复制代码
Build
Test
Deploy

串起来。


为什么 Jenkins 后来被嫌弃?

因为太重。

需要:

text 复制代码
自己买服务器
自己维护
自己升级
自己装插件

最后:

text 复制代码
维护 Jenkins 的成本
比维护业务系统还高

很多公司都有:

text 复制代码
Jenkins 专家

专门修 Jenkins。


第二次革命:CI 即代码

后来大家发现:

text 复制代码
流程配置
也是代码

于是出现:

Pipeline as Code

例如:

yaml 复制代码
build:
  test:
  deploy:

写进仓库。

这样:

text 复制代码
代码
+ 流程

一起版本管理。


GitHub Actions 的出现

2019年以后。

GitHub Actions

把 CI 彻底平民化。

以前:

text 复制代码
GitHub
+
Jenkins

现在:

text 复制代码
GitHub
+
GitHub Actions

一步到位。


Actions 本质是什么

很多人以为:

text 复制代码
GitHub 帮我运行代码

其实不是。

本质:

text 复制代码
GitHub 提供临时服务器

当你:

bash 复制代码
git push

时。

GitHub:

text 复制代码
创建一个全新的虚拟机

例如:

yaml 复制代码
runs-on: ubuntu-latest

就是:

text 复制代码
启动 Ubuntu

然后:

yaml 复制代码
- checkout
- install
- test

一步步执行。

执行完:

text 复制代码
虚拟机销毁

你看到的 Workflow 到底是什么

例如:

yaml 复制代码
name: CI

on:
  push:

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - run: npm install

      - run: npm test

翻译成人话:

text 复制代码
有人 Push
    ↓
开一台临时 Ubuntu
    ↓
下载代码
    ↓
安装依赖
    ↓
执行测试
    ↓
销毁机器

仅此而已。


CI 为什么和 Docker 越来越绑定

因为:

text 复制代码
环境不一致

一直是软件工程最大问题之一。

于是出现:

Docker

理念:

text 复制代码
把运行环境一起打包

过去:

text 复制代码
代码

现在:

text 复制代码
代码 + 环境

CI 流程变成:

text 复制代码
Push
   ↓
Test
   ↓
Build Docker Image
   ↓
Push Registry

(Push Registry 是将构建好的Docker镜像推送到镜像仓库)

例如:

text 复制代码
Docker Hub 	# Docker官方镜像仓库,最大的公共镜像平台
GHCR 		# GitHub容器镜像仓库,与GitHub深度集成
ECR			# AWS容器镜像仓库,企业级私有仓库服务

第三次革命:持续交付(CD)

大家后来发现:

CI 只能发现问题。

但:

text 复制代码
上线还是人工

于是:

Continuous Delivery

持续交付

流程:

text 复制代码
Push
   ↓
Test
   ↓
Build
   ↓
生成可发布版本

到这里结束。

是否上线:

text 复制代码
人工点击

第四次革命:持续部署(CD)

进一步:

Continuous Deployment

流程:

text 复制代码
Push
   ↓
Test
   ↓
Build
   ↓
Deploy

完全自动。


例如:

text 复制代码
Push main

text 复制代码
Actions

text 复制代码
Docker Build

text 复制代码
Deploy AWS

text 复制代码
线上更新

无需人工。


现代互联网公司的流水线

今天的大厂基本都是:

text 复制代码
Developer
    ↓
Git Push
    ↓
CI
    ↓
Unit Test
    ↓
Lint
    ↓
Security Scan
    ↓
Build Image
    ↓
Push Registry
    ↓
Deploy Staging
    ↓
E2E Test
    ↓
Deploy Production

AI Coding 时代为什么更需要 CI/CD

以前:

text 复制代码
程序员每天写100行代码

现在:

text 复制代码
Claude Code 一天改5000行

问题变成:

text 复制代码
代码增长速度
远超人工审查速度

所以很多团队反而更依赖:

  • CI
  • 自动测试
  • 自动检查
  • 自动部署

因为:

人工 Review 已经无法验证所有改动。


作为 AI 工程师,你应该掌握什么

不需要成为 DevOps 专家。

但至少要理解:

第一层

能看懂:

yaml 复制代码
.github/workflows/*.yml

第二层

知道:

text 复制代码
Trigger    # 触发条件,启动工作流的事件或条件

Job        # 作业任务,工作流中独立的执行单元

Step       # 执行步骤,作业中具体的单个操作

Runner     # 运行器,执行作业的计算资源或代理

Artifact   # 构建产物,作业生成的输出文件或资源

Cache      # 缓存机制,存储临时数据以加速后续执行

是什么意思。


第三层

能自己写:

text 复制代码
测试
Docker Build
Release
Deploy

流水线。


第四层

理解整个工程链路:

text 复制代码
Git
 ↓
GitHub Actions
 ↓
Docker
 ↓
Registry
 ↓
Cloud
 ↓
Production

当你真正理解这一条链路后,再看 GitHub Actions 的 YAML 文件,会发现它们不再是一堆神秘配置,而只是把软件从开发机运送到生产环境的"流水线说明书"。

相关推荐
阿里嘎多学长2 小时前
2026-07-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
wangruofeng1 天前
7.1 万 Star 的 MinerU,把 PDF 变成 LLM 能读懂的 Markdown
github
wangruofeng1 天前
75k Star 的 OCR 传奇——Tesseract 的 40 年,从 HP 实验室到 LSTM 神经网络
github
逛逛GitHub1 天前
又挖到 3 个不错的 GitHub 项目,尤其是第 2 个。
github
逛逛GitHub1 天前
GitHub 上 13 万星的爬虫神器,不要 API Key 就能用了。
github
一点一木1 天前
🚀 2026 年 6 月 GitHub 十大热门项目排行榜 🔥
人工智能·github
OpenTiny社区2 天前
从零开发 AI 聊天页要两周?试试这款 Vue3 垂直对话组件库 TinyRobot,直接开箱即用
前端·vue.js·github
逛逛GitHub2 天前
2 万多 Star!Google 开源了这个神级 GitHub 项目。
github
逛逛GitHub2 天前
免费 Token 烧掉 5 万亿之后,他们出了个一站式创作平台。
github
用户805533698032 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式