「Jenkins」- 流水线(Pipeline)

  CREATED BY JENKINSBOT

问题描述

在工业中,流水线是生产方式,用于制造商品。在软件工程中,流水线是生产方式,实现软件从版本仓库到用户产品这个过程,用于制造软件。流水线由处理元素链组成,依序排列,每个处理元素的输出是下个处理元素的输入。

解决方案

在 Jenkins 中,Jenkins Pipeline 是指支持实现和集成持续交付流水线(Continuous Delivery Pipeline)到Jenkins中的插件集。持续交付流水线,也是生产方式,实现软件从版本仓库到用户这个过程的自动化的表达。如此说来 Jenkins 本来就支持流水线,它是通过图形化界面配置的方式来实现流水线(拉取代码,构建,打包,测试,发布)。

在 Jenkins 1.x 中,只能通过界面配置实现流水线。在 Jenkins 2.x 中,可以通过代码实现流水线,通过代码描述工作任务(这正是我们要学习的)。

特性特征

通过代码实现控制 Jenkins 执行自动化任务,解决以下问题:
1)更好的版本管理:既然流水线由代码实现,则可以将流水线提交到版本仓库进行管理。传统的图形化配置难以进行版本控制。
2)更好的代码审查:在仓库中的代码对所有人可见,有利于代码审查。传统的图形化配置难以进行审查。
3)更好的流程重用:多种项目可以采用相同的流水线,实现流水线的重用。在传统图形化中,任务只能单独配置、互相复制(或者使用接口配置)。

应用场景

持续化方法论(Continuous Methodology)

补充说明

针对 Apache Groovy 编程,有关的内容、编程实现将不会整理到该部分中。原因如下:
1)对于连接数据库,Jenkins Pipeline 没有提供(成熟的、可用的)插件或者方法,我们只能使用 Groovy 进行数据库的连接。
该部分将记录 Jenkins Pipeline 连接数据库存在的问题和解决办法、以及简单示例,但是数据库连接、更多的代码编程实践(比如指定连接使用 UTF-8 编码)将整理到 Apache Groovy 部分。并且该部分也会记录由于 Jenkins Pipeline 环境导致的 Groovy 编程问题。

参考文献

百度百科/流水线
Wikipedia/Pipeline (software)
What is Jenkins Pipeline?