pipeline介绍

目录

概念

定义

主要功能

[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 的优点

  • 效率高:减少人工操作。
  • 稳定性好:流程固定,减少人为失误。
  • 可追踪:每次执行都有日志和结果。
  • 可复用:同一套流程可以多次运行。
  • 质量可控:可以加入测试、扫描、审批等门禁。
  • 交付更快:代码从提交到发布的周期更短。

简单例子

  1. 开发提交代码

  2. 自动拉取最新代码

  3. 安装依赖

  4. 编译项目

  5. 运行单元测试

  6. 生成构建产物

  7. 上传构建产物

  8. 部署到测试环境

  9. 自动通知测试人员

这条流程一旦配置好,后续每次提交代码都可以自动执行,Pipeline 本质上是一种 自动化流程编排方式。它把复杂任务拆成多个阶段,让流程按照固定规则自动执行。在软件工程中,它常用于 CI/CD;在数据领域中,它常用于 ETL 和数据处理;在 AI 领域中,它常用于模型训练和部署。它的核心价值是提升效率、降低错误、统一流程、保障质量。各个场景的pipeline应用不一样,结合对应架构或者流程去了解。

相关推荐
易生一世9 天前
自动化Pipeline中的Kiro CLI详解
自动化·pipeline·key·headless·kiro
StarRocks_labs1 个月前
StarRocks I/O 模型揭秘(一):查询是如何被拆解与调度的?
starrocks·sql·pipeline·mpp·fe
千里马-horse3 个月前
Building a Simple Engine -- Mobile Development -- Conclusion
pipeline·shader·rendering·vulkan
千里马-horse3 个月前
Building a Simple Engine -- Tooling -- Introduction
pipeline·shader·rendering·vulkan
没有bug.的程序员3 个月前
云原生 CI/CD 深度实战:GitLab CI 与 Jenkins 协同内核、Pipeline 自动化精髓与容器化交付指南
ci/cd·云原生·pipeline·gitlab·jekins
人间打气筒(Ada)3 个月前
jenkins基于Pipeline发布项目
java·pipeline·jenkins·流水线·ci·cd·cicd
预立科技4 个月前
Redis 中 Lua 与 Pipeline 的相同点,区别,使用场景
redis·pipeline·lua
胡伯来了5 个月前
10 Transformers - 任务容器类 Pipeline
人工智能·pipeline·transformer·transformers·大数据模型
笨鸟贤妃5 个月前
离线安装(升级)Jenkins和pipeline、multijob等插件【无痛版】
pipeline·jenkins·jenkins插件