来自SCM的Jenkins' Pipeline脚本'民意调查无限

时间:2018-01-12 19:47:48

标签: jenkins-plugins jenkins-pipeline

我的Jenkins建筑项目管道工作流程如下。 检入存储库有两个文件 - JenkinsfileAllBranches和Jenkinsfile

1)JenkinsfileAllBranches - 轮询所有分支以进行更改

def scm_branch = ''

pipeline {
    agent any

    triggers {
        pollSCM('* * * * *') //used this for quick debugging
    }

    stages {
        stage ('SCM') {
            steps {
                script {
                    def git_scm = checkout([$class: 'GitSCM', branches: [[name: '**']],
                    doGenerateSubmoduleConfigurations: false, extensions: [], 
                    submoduleCfg: [], userRemoteConfigs: [[url: <repository_url>]]])

                    scm_branch = git_scm.GIT_BRANCH.substring('origin\\'.length())
                }
            }
        }

        stage('Call Jenkinsfile for specific branch') {
            steps {
                print("branch:${scm_branch}")
              build job:'Build_Project', parameters:
                  [[$class:'StringParameterValue', name: 'BRANCH', value: scm_branch]]
            }
        }
    }
}

2)Jenkinsfile - 为了方便起见,我提供了简化的Jenkinsfile

pipeline {
    agent any

    options {
        disableConcurrentBuilds()
    }
    parameters {
        string(name: 'BRANCH', defaultValue:'', description: 'Enter a branch name to build.')
    }

    stages {
        stage ('SCM') {
            steps {
                script {
                    print("Parameter BRANCH: ${params.BRANCH}")
                }
                git url: <repo_url>, branch: params.BRANCH
            }
        }
    }
}

问题:第一个作业应该每分钟轮询一次分支中的更改,第二个作业应该构建找到更改的特定分支。

当我离开管道脚本时,一切都按预期工作。

但是,当我从SCM&#39;中选择&#39; Pipeline时,JenkinsfileAllBranches表现得非常奇怪。它一次又一次地轮询同一个分支。我该如何解决这个循环? 在阶段 - 调用Jenkins文件中的特定分支,我注意到它总是将分支作为master而不是branch1或branch2执行scm更改。

0 个答案:

没有答案