如何根据JOB_NAME更改构建代理

时间:2018-09-28 05:01:18

标签: jenkins jenkins-plugins jenkins-pipeline

我正在使用Jenkins管道作业来实施CI-CD

目前,我正在全球范围内指定构建代理。 我想根据JOB_NAME进行更改 例如,如果env.JOB_NAME=="jenkin-pipeline-admin-portal"应该建立在 build_2 上,否则建立在 build_1

我尝试使用Jenkinsfile来实现它,但是没有解决问题,

我可以在詹金斯(Jenkins)工作流水线做些什么来实现这一目标吗?

下面是我的Jenkins文件。

pipeline {
    agent {
            label "build_2" 
         }
    stages {
        stage('Build') {
            steps {
                checkout scm
                sh 'npm install'
            }
        }
        stage('Build-Image') {
            steps {
                echo '..........................Building Image..........................'
                script {
                    if(env.JOB_NAME=="jenkin-pipeline-admin-portal"){


                     sh 'sudo docker build -t hostname/admin-portal:1 --build-arg PORT=9007 --build-arg ENVIRONMENT=develop .'

                    }else if(env.JOB_NAME=="jenkin-pipeline-admin-portal-master"){
                    }else{
                         echo 'ELSE block.....................................'
                    }

                }


            }
        }
        stage('Tag-Image') {
            steps {
                  sh 'sudo docker tag hostname/admin-portal:1 hostname/jcibts_swm_dev/admin-portal:latest'
            }
        }
        stage('Push-Image') {
            steps {
                echo '..........................Pushing Image..........................'
                sh 'sudo docker push hostname/jcibts_swm_dev/admin-portal:latest'
            }
        }


    }
}

请让我知道我需要做些什么更改

1 个答案:

答案 0 :(得分:0)

如果您不限于使用声明式管道,则可以使用脚本方法:

def commonSteps() {
    // steps which are common to all JOB_NAMEs
}
if(JOB_NAME==‘jenkin-pipeline-admin-portal’) {
    node(‘build_2’) {
        // body 1
        commonSteps()
    }
} else {
    node(‘build_1’) {
        // body 2
        commonSteps()
    }
}