仅触发Jenkins文件中多个轮询SCM中的一个

时间:2018-01-09 19:00:28

标签: jenkins

我的Jenkinsfile有两个SCM签出primarysecondary。我只想在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'
    }
}

1 个答案:

答案 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来结帐特定的提交。