jenkins 触发pipeline执行(8) 未完
一.时间触发
之前是通过手动触发构建的,显然不够自动化,对于pipeline触发条件,一般是时间触发和事件触发。
时间触发是指定义一个时间,时间到了就触发pipeline执行,在jenkins pipeline中使用trigger指令来定义时间触发。trigger指令只能被定义在pipeline块下,jenkins内置支持cron,pollSCM,upstream三种方式,其它方式可以通过插件来实现。
1.1 cron 定时执行
定时执行就像cronjob,一到时间就执行,它的使用场景通常是执行一些周期性的job。下面是每天18点内,间隔2分钟构建一次,配置好后一定要手动构建一次任务,让jenkins加载pipeline后,trigger指令才会生效,在等2分钟看是否自动构建。
注意好像配置1分钟一次不行 H/01 18 * * *
pipeline { agent any triggers{ cron('H/02 18 * * *') } stages { stage('Hello') { steps { echo 'Hello World' } } } }
只有手动构建一次后,再查看配置界面,此时已经自动配置好了,如下图所示:
详细参考:https://www.cnblogs.com/ycyzharry/p/7598337.html
1.2 pollSCM 轮询代码仓库
轮询代码仓库是指定期到代码仓库询问代码是否有变化,那多久轮询一次? 笔者的回答是:越频繁越好,这里是2分钟一次是代码是否有变化:
pipeline { agent any triggers{ pollSCM('H/02 * * * *') } stages { stage('Hello') { steps { echo 'Hello World' } } } }
只有手动构建一次后,再查看配置界面,此时已经自动配置好了,如下图所示:
不知为什么,自动触发不起使用
这种不太推荐,最好的方式是代码仓库主动通知jenkins,而不是jenkins频繁去代码仓库检查。
二.事件触发
发生了某个事件就触发pipeline执行,比如手动在界面上触发,其它Job主动触发,http api webbook触发等。
2.1 upstream 由上游任务触发
当B任务的执行依赖A任务的结果时,A就称为B的上游任务,jenkins 2.22及以上版本中,trigger指令开始支持upstream类型的触发条件, upstream的作用就是能让B pipeline自行决定依赖哪些上游任务.
配置upstream如下所示:
下面是pipeline-trigger的job,它依赖于helloworld, 当helloworld构建成功后,会触发pipeline-trigger的构建
pipeline { agent any triggers { upstream 'helloworld' } stages { stage('Hello') { steps { echo 'Hello World' } } } }
2.2 Generic Webhook Trigger插件
安装该插件后,jenkins会暴露一个API :<JENKINS URL>/generic-webhook-trigger/invoke。安装如下所示:manage jenkins-->Manage Plugins
勾选,下载安装完在,在重启kenkins服务.
jenkins必需要部署在公网,否则腾讯公蜂访问不到, 如果是公司内部搭建了git服务器,那jenkins就可以部署在内网
参考: https://www.cnblogs.com/chy-op/p/10560217.html