我的Jenkinsfile有两个SCM签出primary
和secondary
。我只想在primary
中进行提交时触发构建。我以明显的方式设置了poll
参数,但它似乎没有被尊重;在对任一存储库进行提交时都会触发构建。
node {
stage("checkout") {
checkout scm: [$class: "MercurialSCM", source: "/var/jenkins_home/hg/primary", subdir: "hg/primary", clean: true], poll: true
checkout scm: [$class: "MercurialSCM", source: "/var/jenkins_home/hg/secondary", subdir: "hg/secondary", clean: true], poll: false
}
stage("do something") {
echo 'Hello World'
sh 'sleep 30s'
echo 'Done'
}
}
答案 0 :(得分:0)
我无法弄清楚如何仅在Jenkinsfile中执行此操作。
为了自己解决这个问题,我最终创建了一个单独的Jenkins作业(自由样式项目,而不是管道),该作业已在primary
存储库上设置为Poll SCM。这项工作除了在Post-build Actions
中没有执行任何操作外,它触发了我实际的Jenkins Pipeline作业,该作业会像您显示的那样加载Jenkinsfile。
触发器将Predefined parameter
设置为轮询者发现的更改ID。在我的情况下是Git,所以我设置了change=${GIT_COMMIT}
。
在我的管道作业中,我创建了一个名为change
的String参数。
在我的Jenkinsfile中,我在结帐行中使用env.change
来结帐特定的提交。