Jenkins Pipeline触发机制

转发

潘晓华Michael

IP属地: 宁夏

Jenkins Pipeline
设置好了功能强大的流水线后,接下来我们要做的就是去执行流水线,如果都靠手动去触发流水线,显然不符合带着自动化基因新一代工程师的风格,必须自动触发。
那么Jenkins的Pipeline支持哪些触发机制呢。一起来看一下。

定时触发:cron
cron规则与crontab的规则是一样的

pipeline{
agent any
triggers{
cron(‘0 0 * * *’)
}
stages{
stage(‘半夜触发’){
steps{
echo “凌晨执行”
}
}
}
}
轮询代码仓库
周期性检查代码,看代码是否有更新。这种方式需要使用

pipeline{
agent any
triggers{
pollSCM(‘* * * * *’)
}
stages{
stage(‘每分钟检查’){
steps{
echo “每分钟检查代码仓库是否更新”
}
}
}
}
由上游任务触发
pipeline{
agent any
triggers{
upstream(upstreamProjects: ‘job1,job2’, threshold: hudson.model.Result.SUCCESS)
}
stages{
stage(‘上游触发’){
steps{
echo “当job1或job2执行成功时,触发该流水线”
}
}
}
}
hudson.model.Result包括以下状态:
ABORTED:任务被手动中止
FAILURE:构建失败
SUCCESS:构建成功
UNSTABLE:存在一些错误,但构建没失败
NOT_BUILT:多阶段构建时,前面阶段问题导致后面阶段无法执行

GitLab通知触发
详情请在插件Gitlab plugin的github页面上查看

pipeline{
agent any
triggers{
gitlab(
triggerOnPush: true,
triggerOnMergeRequest: true,
branchFilterType: ‘All’,
secretToken: “abcdxxxfa”)
}
stages{
stage(‘构建’){
steps{
echo “gitlab 触发”
}
}
}
}
将构建状态信息推送到GitLab
在Jenkins的系统设置中,Gitlab选项下填入Gitlab信息。例Connection name设为gitlab
按提示设置Gitlab的凭证,以对话框中输入Gitlab平台获取的API token
在pipeline的post部分,将构建结果更新到Gitlab相应的commit记录下,同时还需要在options参数中加入gitLabConnection配置
pipeline{
agent any
triggers{
gitlab(
triggerOnPush: true,
triggerOnMergeRequest: true,
branchFilterType: ‘All’,
secretToken: “abcdxxxfa”)
}
stages{
stage(‘构建’){
steps{
echo “gitlab 触发”
}
}
}
post{
failure{
updateGitlabCommitStatus name: ‘build’, state: ‘failed’
}
success{
updateGitlabCommitStatus name: ‘build’, state: ‘success’
}
}
options{
gitLabConnection(‘gitlab’)
}
}
Generic Webhook Trigger插件触发
Generic Webhook Trigger是一个通用的通过Webhook的方式触发pipeline的插件

pipeline{
agent any
triggers{
GenericTrigger(
genericVariables: [
key: ‘ref’, value: ‘$.ref’
],
token: ‘secret’,

        causeString: 'Triggered on $ref',
        printContributedVariables: true,
        printPostContent: true,
                    regexpFilterText: '$ref',
                    regexpFilterExpression: 'refs/heads(master|dev)'
    )
}
stages{
    stage('自定义触发'){
        steps{
            echo "Generic 触发"
        }
    }
}

}
然后通过POST请求触发

curl -X POST -H “Content-Type: application/json” -d ‘{“ref”: “refs/heads/master” }’ -vs http://jenkins.local:8080/jenkins/generic-webhook-trigger/invoke?token=secret
触发条件依靠:token、regexpFilterText、regexpFilterExpression三个参数。首先token必须匹配,其次regexpFilterText指定的key对应的值满足regexpFilterExpression表达式。

参考资料
《Jenkins 2.X实践指南》

作者:潘晓华Michael
链接:https://www.jianshu.com/p/7dc91bfffbb1
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值