「Jenkins」- 流水线 | Pipeline | JENKINS-PIPELINE

描述

文档:https://www.jenkins.io/doc/book/pipeline/

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

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

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

通过代码实现控制 Jenkins 执行自动化任务,解决以下问题:

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

功能特性

  • 内置文档 | 在 Jenkins 服务中,内置了一些文档,启动 Jenkins 后,即可访问查看。这包括代码生成器,全局变量的说明等等。
  • 在官方文档中,没有列举内置环境变量,需要访问进行 ${YOUR_JENKINS_URL}/pipeline-syntax/globals 查看;

原理

针对 Pipeline 功能,其由插件提供,我们根据 Jenkins 版本来选择最新版本的 Pipeline 插件即可。

该列出的插件为基础插件,“基础插件”是指必须安装的插件,或说及其有用的插件。针对这些插件,可能已默认安装,不需要单独安装;

插件功能: – 这是 Pipeline 的基础插件,要使用 Pipeline 功能,需要安装该插件,可让你可以协调简单或复杂的自动化。
插件地址: https://plugins.jenkins.io/workflow-aggregator
步骤手册: https://jenkins.io/doc/book/pipeline/
其他链接: https://github.com/jenkinsci/pipeline-plugin

Pipeline: Groovy

https://plugins.jenkins.io/workflow-cps/

Apache Groovy | Both Declarative and Scripted Pipeline are DSLs to describe portions of your software delivery pipeline. Scripted Pipeline is written in a limited form of Groovy syntax.

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

在 Jenkins Script Console 中,执行 println GroovySystem.version 能够输出 Pipeline 说使用的 Groovy 版本。
针对 Jenkins 2.469 Pipeline: Groovy 3908.vd6b_b_5a_a_54010 版本,其使用的 Groovy 2.4.21 版本。而当前 Groovy 最新为 4.x 版本。

– 基于 Groovy 脚本的 CPS 转换的 Pipeline 执行引擎
https://wiki.jenkins.io/display/JENKINS/Pipeline+Groovy+Plugin
https://github.com/jenkinsci/workflow-cps-plugin

WIP Groovy CPS
https://github.com/cloudbees/groovy-cps

针对其他插件

针对某些具体功能时,需要记住其他插件,该处不再详述。

使用 Jenkins 的 Pipeline 和 Blue Ocean 插件。

Pipeline Utility Steps
主页:https://plugins.jenkins.io/pipeline-utility-steps/
文档:https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/

File Operations Plugin
https://plugins.jenkins.io/file-operations/
https://www.jenkins.io/doc/pipeline/steps/file-operations/

Config File Provider
官网:https://plugins.jenkins.io/config-file-provider/
文档:https://www.jenkins.io/doc/pipeline/steps/config-file-provider/
仓库:https://github.com/jenkinsci/config-file-provider-plugin

Custom Tools
官网:https://plugins.jenkins.io/custom-tools-plugin/
文档:
仓库:https://github.com/jenkinsci/custom-tools-plugin

应用

Running Pipelines

https://www.jenkins.io/doc/book/pipeline/running-pipelines/

Extending with Shared Libraries

https://www.jenkins.io/doc/book/pipeline/shared-libraries/

持续化方法论(Continuous Methodology)

该笔记将记录:在 Jenkins Pipeline 中,常见基本概念,以及相关问题的解决办法;

Pipeline Best Practices

https://www.jenkins.io/doc/book/pipeline/pipeline-best-practices/

参考

百度百科 / 流水线
Wikipedia/Pipeline (software)
What is Jenkins Pipeline?
Jenkins/Pipeline
Getting started with Pipeline/Global Variable Reference