我有以下管道(基本上,并行3个下游版本中的Build_BASE触发器):
-> BUILD1
Build_BASE -> BUILD2
-> BULID3
如果有人对Build_Base进行git提交,它将启动整个管道。
但如果有人提交了BUILD1或2或3,我希望构建从那时开始,而不是构建Build_Base。这可能吗?
这是我的管道的精简版本(我还没有添加git轮询)
stage('Base_AMI') {
node('eod-us-west-2_shared') {
stage('Build') {
deleteDir()
git branch: 'master', credentialsId: '2df157d3-f9c3-4005-91d0-b3052764474f', url: 'git@github.com:myrepo/base_ami.git'
sh "bash do_build.sh"
}
}
}
stage("DOWNSTREAM_BUILDS"){
parallel (
"BUILD1" : {
node('eod-us-west-2_shared') {
wrap([$class: 'BuildUser']) {
sh 'echo ${BUILD_USER}'
deleteDir()
git branch: 'master', credentialsId: '2df157d3-f9c3-4005-91d0-b3052764474f', url: 'git@github.com:myrepo/build1.git'
sh "bash do_build.sh"
}
}
},
"BUILD2" : {
node('eod-us-west-2_shared') {
deleteDir()
git branch: 'master', credentialsId: '2df157d3-f9c3-4005-91d0-b3052764474f', url: 'git@github.com:myrepo/build2.git'
sh "bash /private/myrepo/git_clone_repo.sh"
sh "bash do_build.sh"
}
},
"BUILD3" : {
node('eod-us-west-2_shared') {
deleteDir()
git branch: 'master', credentialsId: '2df157d3-f9c3-4005-91d0-b3052764474f', url: 'git@github.com:myrepo/build3.git'
sh "bash do_build.sh"
}
}
)
}
答案 0 :(得分:0)
似乎应该发生的事情是你的每个git存储库都应该在它自己的Jenkins文件的管道上。
然后在你的上游工作中你会做:
stage("DOWNSTREAM_BUILDS"){
parallel (
// job 1, 2 and 3 will be scheduled in parallel.
{ build("job1") },
{ build("job2") },
{ build("job3") }
)
}
整个技巧是你的管道配置 - 每个应该只轮询它自己的git存储库。