Git 来自SCM的Jenkinfile在应用程序代码上选择不同的分支

Git 来自SCM的Jenkinfile在应用程序代码上选择不同的分支,git,jenkins,jenkins-pipeline,Git,Jenkins,Jenkins Pipeline,这就是我想做的,但我不知道这是否可能 我在bitbucket中有一段ansible代码,jenkins用它来部署一些java应用程序。 此ansible代码包含Jenkins文件(以及其他内容),用于Piepline和部署JAVA应用程序 这个代码是由jenkins这样调用的 开发人员有4个工作可以为4个环境进行部署(devqastgprd),但目前他们只有dev和prod分支 问题是,开发人员现在希望能够在作业开始之前选择java代码的分支(dev或prod(master)。(例如:QA作业

这就是我想做的,但我不知道这是否可能

我在bitbucket中有一段ansible代码,jenkins用它来部署一些java应用程序。 此ansible代码包含Jenkins文件(以及其他内容),用于Piepline和部署JAVA应用程序

这个代码是由jenkins这样调用的

开发人员有4个工作可以为4个环境进行部署(devqastgprd),但目前他们只有dev和prod分支

问题是,开发人员现在希望能够在作业开始之前选择java代码的分支(dev或prod(master)。(例如:QA作业选择master分支,dev作业选择dev分支等等)

我知道,对于jenkins,您可以选择带有git参数插件的branch,但对于本例,这将是选择ANSILBE代码,它是执行此任务的代码,而不是JAva应用程序代码(位于jenkins文件中)

是否可以在作业开始之前选择一个分支,并且根据该选择,java应用程序的签出和构建是DEV分支还是PROD分支

这是Jenkin文件代码的一部分

node {
stage ('Code Checkout') {
            git branch: 'master or develop', ***-->would like here that can be choose master or dev***
                credentialsId: 'xxxxxxxxxxxxxxxxxxxx', 
                //url: 'https://user@bitbucket.org/ev/der-azure.git'
                url:  'https://user@bitbucket.org/ev/-service.git.git'
        }
stage ('Check Branch') { 
        sh 'git branch'
}

stage('Compile and Build WAR') {
        sh 'mvn clean compile war:war'

不知道你为什么要在分支领域安装窃听器, 但在高级选项中,“Refspec”可能会有所帮助

编辑 我不知道,在你的例子中,关于普通的scm,但是我注意到你正在Jenkins文件中进行另一个签出,下面的步骤是有效的

 stage('checkout') {
     checkout scm: [$class: 'GitSCM',
        userRemoteConfigs: [[url: 'https://repository.foo/git/fooRepoName.git' ,
            credentialsId: 'credentialsIDToUseFromCredentialsPlugin']],
            branches: [[name:'refs/tags/TAGNAME']]],
        poll:false      
 }

stage('checkout') {
     checkout scm: [$class: 'GitSCM',
        userRemoteConfigs: [[url: 'https://repository.foo/git/fooRepoName.git' ,
            credentialsId: 'credentialsIDToUseFromCredentialsPlugin']],
            branches: [[name:'BRANCHNAME']]],
        poll:false      
 }

我隐藏它的想法可能会混淆人们与ansible代码的分支isntead与java代码这是我需要选择分支的代码。现在我编辑好了,可以了,检查图片。你说的选项在哪里,它是如何工作的?谢谢,你想把它作为参数,那么你应该能够制作参数化的管道ine,参考例如,我已经按照您所说的那样进行了参数构建,但通过这种方式,我可以选择Ansible_operations branch,这是执行反java部署的代码。我希望能够选择开发分支,但不是java代码的Ansible操作。基本上,我希望Ansible操作中的Jenkin文件对开发或主操作进行签出(这就是我想要选择的)的java代码。好吧,如果您使用名称定义参数branch,例如,
custom\u branch
,那么您应该能够在branch字段中引用它,可能是
${custom\u branch}
…或者在管道中也是。是的,我按照我说的做了,但我只能选择ansible代码,为什么我可以选择Java代码?检查我更新的Jenkins文件。你能在你的问题中准确地指定你想要选择分支的方式和位置吗?正如我在第二张图片上的“带参数的构建”中指定的那样。现在配置为选择Ansible代码(生成代码)但是我希望能够选择de JenkinFile中的java代码分支,正如您所知,git filter branch是一个重写历史的工具-它与选择分支无关!因此,我将删除
git filter branch
标记,并用更合适的标记替换它。