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


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容