探索Jenkins(4)- 流水线的搭建

流水线(Pipeline),这个概念,在工业中或生活中也常常听到。如果你对Jenkins流水线概念比较熟悉,可以跳过这个段落,直接看下一段落;如果你不太清楚概念,可以让我来举个例子给你听。以厨房为例,从买菜到上桌,可能会经过买菜、洗菜、切菜、下锅、出锅、上桌,这是一条厨房上菜的流水线。对应到具体的人的话,采购专员负责买菜,洗菜工负责洗菜,也就是可以将每一个“生产单位”安排一个负责人(对应Jenkins中的一个一个任务)。然后会有一个经理,他会负责整个流程的人员安排、统筹规划、情况汇报(这个经理就是pipeline任务)。总结一下,Jenkins中有普通的任务和流水线任务,流水线任务会负责将普通任务一个接一个按照约定的规则进行统一管理和运行。

一、手把手来搭建一个demo pipeline

首先,要有一个Jenkins环境,可以是自己搭建的,也可以是公司或小组成员已经搭建好的。

接着,创建一个新的任务。在平常,常见普通的任务,常常选择下图的“自由风格的软件项目”。


这一次,我们选择“流水线”类型的任务(英文版有些会写成pipeline)。如下图:


这里要补充一点,如果你发现你新建的时候,没有这个选项,那估计是你的Jenkins环境里没有安装pipeline插件。


补充如何安装pipeline插件?

在Jenkins里,系统管理-管理插件-新建插件,搜索“pipeline”,在结果中,选择下图的“pipeline”插件进行安装,会自动安装一些依赖的插件。如果验证是否安装成功,就是看你再次尝试新建的时候,是否有流水线类型的任务选项。

备注:如果是别人搭建的Jenkins,需要你拥有相关权限,才可以看到系统管理的入口,来进行插件安装。


接着说,现在就可以新建流水线类型的任务了。在新建之后,就是要进行相关的配置。下面通过实际例子的方式,来说一下这个配置。

如下图,例子中,我们拥有两个普通类型的任务,分别是"demoJob1"和"demoJob2",还有一个流水线任务"demoPipeline"。希望实现demoPipeline构建时,会一次执行demoJob1的构建和执行demoJob2。

在demoPipeline的配置中,有下图的pipeline script,通过配置这个脚本的内容,来设置整个流水线和各个任务的细节。


补充,pipeline script的脚本语言默认采用"Groovy"语言。

摘自维基百科:"Apache的Groovy是Java平台上设计的面向对象编程语言。这门动态语言拥有类似Python、Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用,Groovy代码动态地编译成运行于Java虚拟机上的Java字节码,并与其它Java代码和库进行互操作"


pipeline script脚本代码示例

node {

    //stage("stageName") {

        // do something here

    //}

    stage("RunDemoJob1") {

        echo "Now lets run DemoJob1!!!"

        build job:"demoJob1"

    }

    stage("RunDemoJob2") {

        echo "Now lets run DemoJob2!!!"

        parameters: [

            string(name: "demoParam2", value:"valueFromPipeline" )

        ]

        build job:"demoJob2"

    }

}

运行结果如下图:

每一行代表一次的流水线任务执行,绿色代表本次执行成功,红色代表失败,深红色代表具体哪一步失败。每一列代表一个stage,对应脚本代码中的stage。脚本中比较常用的函数,build job可以调用jenkins下其他的任务,参数为该任务的name。代码中parameters可以用于对build job前,进行一些参数赋值。这些参数必须是job中已经设置过的job,如下图。

于是,我们就完成了流水线任务的基本搭建,可以用于日常构建了。


再补充一点,Jenkins可以是搭建在机器A上,而任务不是非得在机器A上执行,也可以执行在机器B。此时,机器B被叫做slave节点机器。在Jenkins的任务配置中,可以选择slave节点配置,来做到上面说的效果。

在任务配置中,有一个选项"限制项目的运行节点",如下图

输入框内填的是节点的名字,而节点需要在Jenkins系统设置里提前进行节点配置。具体配置入口如下:

具体节点配置方法,不在文本具体叙述了。


最后最后最后,来个结果展示。

蓝色的是流水线任务,执行一次该任务时,它会带起其他五个任务依次执行:打包->静态代码检查->代码覆盖率统计->Monkey测试->自动化测试->发送结果报告。

每天在非工作时间定时地去构建,设定的是凌晨,执行依次时间大概为5个小时,大约让它能够在上班前执行完就行。然后,每天人一到公司,最新代码已经部署到测试环境,邮箱中已经收到了关于这次构建的各种结果(静态代码检查、自动化测试报告)。相比原有没有流水线任务的情况,去除了一些手工的工作,以及能够更早地暴露出由于开发最新代码修改而产生的问题。


你可能感兴趣的:(探索Jenkins(4)- 流水线的搭建)