来自SCM的Jenkinfile在应用程序代码上选择其他分支

时间:2018-07-26 00:29:25

标签: git jenkins jenkins-pipeline

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

我在bitbucket中有一个有趣的代码,jenkins用来部署一些Java应用程序。 这个Ansible代码具有jenkinsfile(以及其他内容),用于pepeline和部署JAVA应用程序。

这样的代码被詹金斯称为。

enter image description here

开发人员有4个工作,可以针对4个环境(dev-qa-stg-prd)进行部署,但目前他们只有dev和prod分支

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

我知道您可以使用jenkins选择带有git参数插件的分支,但是在这种情况下,可以选择ANSILBE CODE,它是执行工作的代码,而不是JAva应用程序代码(在jenkinsfile中) )

enter image description here

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

这是jenkinfile代码的一部分。

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'

1 个答案:

答案 0 :(得分:0)

不知道,为什么分支字段有问题, 但在高级选项“ Refspec”中可以提供帮助

enter image description here

编辑 不知道您的情况下正常的scm,但是正如我注意到您在jenkinsfile中进行另一次检出一样,以下步骤有效

 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      
 }