首页 文章

如何在Jenkinsfile中捕获分支名称

提问于
浏览
0

我在Docker环境中使用Jenkins for CI-CD . 我根据环境有3个环境和分支 . 说, developqaprod .

我正在使用Jenkins管道来构建并将图像推送到DTR .

我只想检查如何在jenkinsfile中获取分支名称,以便我可以在分支名称的基础上使用条件来推送依赖于分支名称的Docker镜像,如:

if(env.BRANCH_NAME==develop){

下面是我的Jenkinsfile:

pipeline {
    agent {
       label "master"
    }

    stages {
        stage('Build') {
            steps {
                echo '..........................Building Jar..........................'
                echo 'Pulling................................................' + env.BRANCH_NAME
                sh 'npm install'

            }
        }
        stage('Build-Image') {
            steps {
                echo '..........................Building Image..........................'
                sh 'sudo docker build -t some_org_dev/some_repo:v0.1 --build-arg PORT=9007 --build-arg ENVIRONMENT=develop .'
            }
        }
        stage('Tag-Image') {
            steps {

            if(env.BRANCH_NAME==develop){
                echo '..........................Taging Image..........................'
                sh 'sudo docker login some_org_dev/some_repo -u username -p password'
                sh 'sudo docker tag some_org_dev/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'
                }else if(env.BRANCH_NAME==qa){
                echo '..........................Taging Image..........................'
                sh 'sudo docker login some_org_qa/some_repo -u username -p password'
                sh 'sudo docker tag some_org_qa/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'

            }
        }
        stage('Push-Image') {
            steps {
            if(env.BRANCH_NAME==develop){
                echo '..........................Pushing Image..........................'
                sh 'sudo docker push some_org_dev/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'
                }
            }else if(env.BRANCH_NAME==qa){
                echo '..........................Pushing Image..........................'
                sh 'sudo docker push some_org_qa/some_repo:v0.1 some_org/some_repo/service-portal:v0.1'

            }

        }

    }
}

2 回答

  • 1

    在multibranch-pipeline上,我使用如下内容:

    pipeline {
      agent { label "jenkins" }
    
      stages {
        stage("A Stage") {
          when {
            expression { GIT_BRANCH ==~ /(develop)/ }
          }
    
          steps {
            sh 'deploy'
          }
        }
      }
    }
    

    如果你不使用multibranch,你可能需要使用 sh 'env' .

  • 0

    我相信你缺少引号,错误是你得到一个未定义的变量吗?尝试:

    if (env.BRANCH_NAME== 'develop') {\\code here}
    

相关问题