pipeline{
//在代理上执行该pipeline
agent{
label '云端代理主机号'
}
}
parameters{
string(name:'',defauleValue:'',descriple:'')
}
//环境变量
tools{
maven 'mvn3.6'
jdk 'jdk1.8_master'
}
//常量参数
environment{
}
options {
//保持构建的最大个数
buildDiscarder(logRotator(numToKeepStr: '10'))
}
//定期检查开发代码更新,工作日每晚4点做daily build
triggers {
pollSCM('H 4 * * 1-5')
}
//pipeline的各个阶段场景
stages{
stage('镜像拉取'){
steps{
echo"~~~~~~~"
script{
sh'''
'''
}
}
}
}
//在整个pipeline或阶段完成后一些附加的步骤,post步骤可选。
//通畅用于异常处理,若上个阶段执行失败,则做某些操作。
//例如上个阶段清理依赖包,判断清理失败后,就发送邮件进行报警并退出
post{
always{
script{
}
}
}
}
always:不论当前完成状态是什么,都执行
changed:只要当前完成状态与上一次完成状态不同就执行
fixed:上一次完成状态为失败或不稳定(unstable),当前完成状态为成功时执行
regression:上一次完成状态为成功,当前完成状态为失败、不稳定或中止(aborted)时执行
aborted:当前执行结果是中止状态时(一般为人为中止)执行
failure:当前完成状态为失败时执行
success:当前完成状态为成功时执行
unstable:当前完成状态为不稳定时执行
cleanup:清理条件块。不论当前完成状态是什么,在其他所有条件块执行完成后都执行。post部分可以同时包含多种条件块。以下是post部分的完整示例
注意:
post步骤在阶段中,为steps后面抒写
post步骤的每个判断,都会匹配,而非第一个匹配了,其它就跳过了
triggers
解释一:
triggers指令定义了Pipeline自动化触发的方式。对于与源代码集成的Pipeline,如GitHub或BitBucket,triggers可能不需要基于webhook的集成也已经存在。目前只有两个可用的触发器:cron和pollSCM。
解释二:
定时器:顾名思义,这部分是设定定时启动的,pollSCM表示的是定时检查代码库的变化,如果有变化触发该job的构建;而cron则表示定时触发该job的构建,里面的规则如下:
MINUTE 一小时内多少分钟(0-59)
HOUR 一天内多少小时(0-23小时)
DOM 一个月内多少天(1-31)
MONTH 每月(1-12)
DOW 星期几(0-7),其中0和7都表示周日。
优先顺序如下:
'*' 可用来指定所有有效的值。
'M-N' 可以用来指定一个范围,比如“1-5”
'M-N/X'或'*/X' 可用于在指定范围内跳跃一个X的值,比如在MINUTE字段中"*/15"表示"0,15,30,45","1-6/2"表示"1,3,5"。
'A,B,...,Z' 可以用来指定多个值,比如“0,30”或“1,3,5”。
任何空白行和'#'开始的行都将表示为注释而不予理睬。
此外,''@yearly', '@annually', '@monthly', '@weekly', '@daily', '@midnight', '@hourly'都是支持的
例子
* * * * * 每分钟
5 * * * * 每一小时后第5分钟
H/15 * * * * 每15分钟
H(0-29)/10 * * * * 每小时的0到29分钟每15分钟
H 2-19/2 * * 1-5 每周1到周五(工作日)2点到19点每2小时执行
H H 1,15 1-11 * 1到11月1号和15号各执行一次```