目录
[1. 自动化流程](#1. 自动化流程)
[2. 标准化执行过程](#2. 标准化执行过程)
[3. 持续集成和持续交付](#3. 持续集成和持续交付)
[4. 可视化流程状态](#4. 可视化流程状态)
[5. 支持失败回滚和质量卡点](#5. 支持失败回滚和质量卡点)
[1. CI/CD Pipeline](#1. CI/CD Pipeline)
[2. Data Pipeline](#2. Data Pipeline)
[3. Machine Learning Pipeline](#3. Machine Learning Pipeline)
[4. Build Pipeline](#4. Build Pipeline)
[Pipeline 的优点](#Pipeline 的优点)
概念
Pipeline 通常翻译为"流水线"或"管道"。它是一种把复杂流程拆分成多个连续阶段,并按照既定顺序自动执行的机制。可以理解为:将一个任务从输入到输出,拆成多个步骤,每个步骤完成一部分工作,前一个步骤的输出可以作为后一个步骤的输入,最终形成完整的自动化流程。
案列:
提交代码 -> 拉取代码 -> 编译 -> 单元测试 -> 打包 -> 部署 -> 验证
类似于这样一个流程可以理解未pipeline。
定义
从工程角度看,Pipeline 是一种 流程编排模型。
它通常包含以下核心元素:
- Stage 阶段:流程中的大步骤,例如构建、测试、部署。
- Step 步骤:阶段内部的具体操作,例如执行命令、运行脚本、上传文件。
- Input 输入:Pipeline 开始时接收的数据、代码、配置或事件。
- Output 输出:Pipeline 执行完成后产生的结果,例如构建产物、测试报告、部署结果。
- Trigger 触发器:决定 Pipeline 什么时候运行,例如代码提交、定时任务、手动触发。
- Condition 条件:决定某些阶段是否执行,例如只在主分支部署生产环境。
- Artifact 产物:Pipeline 中间或最终生成的文件,例如安装包、镜像、日志、报告。
主要功能
1. 自动化流程
Pipeline 最大的价值是把重复性流程自动化。
例如以前需要人工执行:
使用 Pipeline 后,可以变成自动执行:
这样可以减少人为错误,提高效率。
2. 标准化执行过程
Pipeline 可以把团队约定的流程固化下来。
比如所有代码合入前都必须经过:
这样每个人提交的代码都会走同一套标准流程,避免"有人测了,有人没测"的不一致问题。
3. 持续集成和持续交付
在 DevOps 里,Pipeline 是 CI/CD 的核心。
- CI,持续集成:代码提交后自动构建、自动测试,尽早发现问题。
- CD,持续交付/部署:代码通过验证后自动发布到测试环境、预发环境或生产环境。
典型 CI/CD Pipeline:
代码提交
- 静态检查
- 编译构建
- 单元测试
- 集成测试
- 构建镜像
- 部署测试环境
- 人工审批
- 部署生产环境
4. 可视化流程状态
很多平台会把 Pipeline 每个阶段的执行状态展示出来。
例如:
- Build Success
- Test Success
- Package Success
- Deploy Failed
这样可以快速定位问题发生在哪个阶段。
5. 支持失败回滚和质量卡点
Pipeline 可以设置质量门禁。
例如:
- 测试失败,不允许部署。
- 代码扫描有高危漏洞,不允许合入。
- 构建失败,不生成发布包。
- 生产部署前必须人工审批。
这可以帮助团队控制交付质量。
常见类型
1. CI/CD Pipeline
这是最常见的软件研发流水线。
用于自动完成代码构建、测试、打包、部署等流程。
使用场景:
- 应用自动构建
- 自动跑测试
- 自动发布测试环境
- 自动部署生产环境
- 代码合入前质量检查
常见工具:
- Jenkins
- GitLab CI
- GitHub Actions
- Azure DevOps
- TeamCity
2. Data Pipeline
数据领域中的 Pipeline 用于处理数据流转。
例如:
使用场景:
- 日志采集分析
- 用户行为分析
- 数据仓库 ETL
- 实时报表
- 大数据任务调度
常见工具:
- Airflow
- Spark
- Flink
- Kafka
- dbt
3. Machine Learning Pipeline
机器学习 Pipeline 用于自动化模型开发和部署流程。
例如:
数据收集 -> 数据清洗 -> 特征工程 -> 模型训练 -> 模型评估 -> 模型部署
使用场景:
- 模型训练自动化
- 模型效果评估
- 模型版本管理
- 在线推理服务部署
常见工具:
- Kubeflow
- MLflow
- Airflow
- TensorFlow Extended
4. Build Pipeline
构建流水线专注于把源码变成可运行产物。
例如:
源码 -> 编译 -> 打包 -> 生成 APK/JAR/Docker 镜像
使用场景:
- Android APK 构建
- Java JAR 包构建
- 前端静态资源构建
- Docker 镜像构建
使用场景
软件开发
当团队多人协作开发时,Pipeline 可以帮助自动检查代码质量。
例如:
适合场景:
- 多人协作项目
- 分支频繁合并
- 需要保证主分支稳定
- 需要自动发布测试包
测试验证
测试团队可以用 Pipeline 自动执行测试任务。
例如:
每日凌晨自动拉取最新代码,构建测试包,并执行自动化测试。
适合场景:
- 自动化回归测试
- 接口测试
- UI 自动化测试
- 性能测试
- 兼容性测试
发布部署
运维或 DevOps 团队可以通过 Pipeline 管理发布流程。
例如:
测试通过后,自动部署到预发环境,审批后再发布生产环境。
适合场景:
- Web 服务发布
- 微服务部署
- 容器镜像发布
- 灰度发布
- 蓝绿部署
数据处理
数据团队可以用 Pipeline 定时处理数据。
例如:
每天凌晨从业务数据库同步数据,清洗后写入数据仓库。
适合场景:
- 日报生成
- 数据同步
- 日志分析
- 用户画像计算
- 数据质量检查
Pipeline 的优点
- 效率高:减少人工操作。
- 稳定性好:流程固定,减少人为失误。
- 可追踪:每次执行都有日志和结果。
- 可复用:同一套流程可以多次运行。
- 质量可控:可以加入测试、扫描、审批等门禁。
- 交付更快:代码从提交到发布的周期更短。
简单例子
开发提交代码
自动拉取最新代码
安装依赖
编译项目
运行单元测试
生成构建产物
上传构建产物
部署到测试环境
自动通知测试人员
这条流程一旦配置好,后续每次提交代码都可以自动执行,Pipeline 本质上是一种 自动化流程编排方式。它把复杂任务拆成多个阶段,让流程按照固定规则自动执行。在软件工程中,它常用于 CI/CD;在数据领域中,它常用于 ETL 和数据处理;在 AI 领域中,它常用于模型训练和部署。它的核心价值是提升效率、降低错误、统一流程、保障质量。各个场景的pipeline应用不一样,结合对应架构或者流程去了解。