引言

Jenkins 是实现 CI/CD 的工具,CI/CD 可视为流水作业,怎么把一个个流水作业串起来并有序执行呢,这就涉及到 Jenkins Pipeline,参考 Jenkins Pipelien 官网,本文将介绍有关 Jenkins Pipeline 的概念及创建方式,具体 Pipeline 的语法等不会涉及到,将在下节详细介绍。

内容提要:

  1. 什么是 Jenkins Pipeline
  2. Jenkins Pipeline 创建方式
    Blue Ocean
    UI 界面
    SCM

什么是 Jenkins Pipeline

Jenkins Pipeline 是一套插件,它支持实现和集成持续交付流水线作业到 Jenkins。Pipeline 提供了一组可扩展的工具, 用于通过 Pipeline 领域特定语言(DSL)将简单到复杂的交付流水线建模为“代码”。

Jenkins 1.x 只能通过界来⼿动描述部署 Pipeline。
Jenkins 2.x 开始⽀持 Pipeline as code, 可以通过代码来描述部署流⽔线。

Pipeline 支持两种语法:Declarative 声明式(在 Pipeline 2.5 引入)和 Scripted 脚本式 Pipeline 。两种语法都支持构建持续交付 Pipeline 。两种都可以用来在 web UI 或 Jenkinsfile 中定义 Pipeline ,不过通常认为创建一个 Jenkinsfile 并将其检入源代码控制仓库是最佳实践,更方便版本控制,团队协作,代码重用。

Groovy 脚本语⾔被作为 Pipeline 的默认语, 使用 Groovy 语言结合 DSL 开发的脚本称为 JenkinsfileJenkinsfile 的文件保存任务配置和流水线信息。声明式和脚本式流水线都是 DSL 语言,用来描述软件交付流水线的一部分。 脚本式流水线是用一种限制形式的 Groovy 语法编写的。Jenkins 默认是不支持 Jenkinsfile,需要安装 Pipleline 插件,Jenkins 部署时默认安装建议的插件就包括 Pipeline 插件

下面这个图是一个持续交付流水线式作业模式的例子:

jenkins pipeline 从某个点开始 jenkins pipeline scm_jenkins

Jenkins Pipeline 创建方式

可以通过三种方式创建 Pipeline,分别是 Blue Ocean,UI 界面 和 SCM,当然前提条件有 Jenkins 环境并安装了 Pipeline 插件。

Blue Ocean 创建 Pipeline

Blue Ocean 是一个插件,而且是一个皮肤插件。它是一个项目,用来研究下一代 Jenkins 的 UI 界面或者更好的用户体验。说白了,你就可以理解是一个换肤插件。

  1. 安装 Blue Ocean 插件
    首先通过 Manage Jenkins -> Plugin Manageer 进行安装

jenkins pipeline 从某个点开始 jenkins pipeline scm_运维_02

  1. 访问 Blue Ocean
    安装成功后,Jenkins 首页点击 Open Blue Ocean

jenkins pipeline 从某个点开始 jenkins pipeline scm_CI/CD_03

  1. 创建 Pipeline
    本地部署的 Jenkins,想创建一个存储在 Git 的 Pipeline,页面太慢了,便放弃了。顺便说一下,一般公司部署的 Jenkins,普通用户未必有权限通过 Blue Ocean 插件创建 Pipeline。 注意,通过 Blue Ocean 创建的 Pipeline 实际上是一个 multibranch Pipeline, 将为 repository 上每个 branch 都创建一个 Jenkinsfile。

jenkins pipeline 从某个点开始 jenkins pipeline scm_CI/CD_04

选择 Git

jenkins pipeline 从某个点开始 jenkins pipeline scm_运维_05


UI 界面创建 Pipeline

通过这种方式创建的 Jenkinsfile 是存储在 Jenkins 自身(Jenkins home directory)

  1. New Item

jenkins pipeline 从某个点开始 jenkins pipeline scm_jenkins_06

  1. 输入名字,并选择 Pipeline 类型

jenkins pipeline 从某个点开始 jenkins pipeline scm_jenkins_07

  1. 下拉到 Pipeline Tab,默认选择 Pipeline script
    这里选了个 Hello Word 的 sample

jenkins pipeline 从某个点开始 jenkins pipeline scm_pipeline_08

  1. 保存一下,就可以 Build 了

jenkins pipeline 从某个点开始 jenkins pipeline scm_运维_09

  1. Console Output

jenkins pipeline 从某个点开始 jenkins pipeline scm_CI/CD_10

SCM 创建 Pipeline

利用 UI 界面创建复杂的 Pipeline,不便编写和维护脚本。 为了方便,Pipeline Jenkinsfile 可以用文本编辑器或 IDE 编写提交到 SCM (Source Control Manager), Jenkins 可以从 SCM 取出 Jenkinsfile 并执行 Pipeline 脚本。

Jenkins 的配置如下,重复 UI 界面中的 1-2 步骤,第 3 步,下拉到 Pipeline Tab,选择 Pipeline script from SCM,配置 Repository,及 Jenkinsfile 的路径。

jenkins pipeline 从某个点开始 jenkins pipeline scm_jenkinsfile_11