流水线(Pipeline),这个概念,在工业中或生活中也常常听到。如果你对jenkins流水线概念比较熟悉,就当作复习吧,毕竟小编是一个很死板的人,不会打比喻,就是所有女生都嫌弃的哪种人,不懂幽默,所以一喻难求,嘿嘿;举个例子给你们听,以厨房为例,从买菜到上桌,可能会经过买菜、洗菜、切菜、下锅、出锅、上桌,这是一条厨房流水线,对应到具体的人的话,采购专员负责买菜,洗菜工负责洗菜,也就是可以将每一个“生产单位”安排一个负责人(对应jenkins中的一个一个任务)。然后会有一个经理,它会负责流程的人员安排、统筹规划、情况汇报(这个经理就是pipeline任务),很陌生是不是,我就知道《—,总结以下,jenkins中有普通的任务和流水线任务,流水线任务会负责将普通任务一个接一个按照约定的规则进行统一管理和运行。
- 让小弟手把手来交各位大哥搭建demo pipeline
首先,要有一个jenkins环境,可以是自己搭建的,也可以是公司或者小组成员已经搭建好的。
接着,创建一个新的任务。在平常,常见的任务,常常选择下图的项目。
这一次,小弟带大哥们选择“流水线”类型的任务(英文版有些会写成pipeline)。看下图
这里要补充一点,如果你发现你新建的时候,没有这个选项,那估计是你的jenkins环境里没有安装pipeline插件。
如何安装插件,在jenkins的web界面,点击左手边的manage jenkins,进入以后找到manage Plugins,点击进去,在“过滤”这个地方写入Pipeline,然后下方会弹出这个插件,安装。
接着说,现在就可以新建流水线类型的任务了,在新建之后,就是要进行相关的配置。
下面通过实际例子的方式,来说一下这个配置。
如下图,例子中,我们有两个普通类型的任务,分别是“demojob1”和“demojob2”,还有一个流水线任务“demoPipeline”。希望实现demoPipeline构建时,会一次执行demojob1和demojob2两个普通的项目。
在demoPipeline的配置中,有下图的pipeline script,通过配置这个脚本的内容,来设置整个流水线和各个任务的细节。
补充,pipeline script的脚本语言默认采用“Groovy”语言
摘自维基百科:"Apache的Groovy是Java平台上设计的面向对象编程语言。这门动态语言拥有类似Python、Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用,Groovy代码动态地编 译成运行于Java虚拟机上的Java字节码,并与其它Java代码和库进行互操作"bash: 摘自维基百科: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"
}
}
运行结果如下图:
如您所看到的,其实其他的您不需要管,如果您是批量执行,重点抓住下面两条就可以了
build job:"demoJob1"
build job:"demoJob2"
只要是您的build job:"demoJob1"跟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小时,大约让它能够在上班前执行完就行,然后,每天人一到公司,最新代码已经部署到测试环境,游侠各种已经收到了关于这次构建的各种结果(静态代码检查、自动化测试报告)。相比原有 没有流水线任务的情况,去除了一些手动的工作,以及能更早的暴露出由于开发最新代码修改而产生的问题。
第二篇:番外篇
对流水线脚本的讲解:
node {
agent any //表示可以在任何的节点上运行
stage(“名称(自定义,一般用于拉代码)”){ //代码拉取
sh “支持sh形式的输出”
}
Stage(‘Build’) {
//代码构建
}
Stage(‘Results’){
//返回最终结果的
}
}
文档出处:https://www.jianshu.com/p/2d6f054d5523