如何解决根据git commit,pull request和merge触发不同的Jenkins管道
我正在考虑根据Github中发生的事情触发不同的Jenkins管道。我希望一组管道发生在git commit上,另一组管道发生在pull请求上,另一组管道发生在合并上。
目前,我有一个Jenkinsfile,可在每次提交时运行这些构建并进行测试。有没有一种方法可以将它们分解为基于特定git行为运行的单独的管道/构建?我没有找到太多有关此目的的文档。似乎是全有还是全无。
解决方法
您可以添加多个Web钩子,这些钩子可以指向不同的管道。在每个Webhook中,您都可以定义将触发管道的操作。
希望它可以回答您的问题。
,我有一个类似的用例,但没有一个不同的管道,而是拥有一个带有多个条件阶段的管道。我采用这种方法的部分原因是因为可以重新进行很多阶段,并将它们合并到一个管道中可以简化这一过程。例如,我一直想做一个构建并运行单元测试,但是我只想在PR和合并上运行静态代码分析。
我的解决方案:
首先,我有一个阶段来确定git中发生了什么(提交,PR,合并...)以及我需要哪些阶段。
stage('Compute Stages'){
steps { script {
Set stages = computeStages(env.GIT_BRANCH,env.CHANGE_ID,env.CHANGE_TARGET,...)
}}}
然后在我的阶段中,我有条件查看它是否应该运行:
stage('Some Stage') {
when {
beforeAgent true
expression {return (stages.contains(STAGES.SOME_STAGE))}
}
steps {script {
do stage stuff
}}}
p.s。请注意,以上代码段无法通过复制粘贴原样运行,而是用于描述总体思路
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。