首页 文章

如何根据分支名称更改Jenkins中的代理标签

提问于
浏览
2

我正在为下面的任务创建一个Jenkin Pipeline .

  • vsts 拉出最新代码

  • 构建代码并从中创建.jar文件

  • 在jar的基础上创建Docker镜像

  • 标记图像

  • 将图像推送到Docker注册表中

为此,我在Jenkinsfile下面写了

pipeline {
    agent {
       label "master"
    }

    stages {
        stage('Build') {
            steps {
                echo '..........................Building Jar..........................'
                sh 'npm install'

            }
        }
        stage('Build-Image') {
            steps {
                echo '..........................Building Image..........................'
                sh 'sudo docker build -t some-org/admin-portal:v0.1 --build-arg PORT=9007 --build-arg ENVIRONMENT=develop .'
            }
        }
        stage('Tag-Image') {
            steps {
                echo '..........................Taging Image..........................'
                sh 'sudo docker login some-repo -u username001 -p password'
                sh 'sudo docker tag some-org/admin-portal:v0.1 some.dtr.io/some-org/admin-portal:v0.1'
            }
        }
        stage('Push-Image') {
            steps {
                echo '..........................Pushing Image..........................'
                sh 'sudo docker push some.dtr.io/some-org/admin-portal:v0.1'
            }
        }
    }
}

下面是Pipeline的Jenkins作业配置快照

enter image description here

我的问题是如何根据分支名称或某些条件更改代理商标签 .

例如,如果分支是 develop 我想使用 slave1 节点,如果分支是 production 我想使用 master

任何帮助都会很明显 .

提前致谢 .

1 回答

  • 1

    您可以在阶段内分配代理标签,以便可以使用所需的代理执行阶段 .

    例如:

    pipeline {
    agent none
    
    stages {
        stage('Build') {
          agent {
            label "master"
           }
            steps {
                echo '..........................Building Jar..........................'
                sh 'npm install'
    
            }
        }
        stage('Build-Image') {
    
          agent {
            label "master"
           }
            steps {
                echo '..........................Building Image..........................'
                sh 'sudo docker build -t some-org/admin-portal:v0.1 --build-arg PORT=9007 --build-arg ENVIRONMENT=develop .'
            }
        }
        stage('Tag-Image') {
    
          agent {
            label "slave1"
           }
            steps {
                echo '..........................Taging Image..........................'
                sh 'sudo docker login some-repo -u username001 -p password'
                sh 'sudo docker tag some-org/admin-portal:v0.1 some.dtr.io/some-org/admin-portal:v0.1'
            }
        }
        stage('Push-Image') {
    
          agent {
            label "slave1"
           }
            steps {
                echo '..........................Pushing Image..........................'
                sh 'sudo docker push some.dtr.io/some-org/admin-portal:v0.1'
            }
        }
     }
    }
    

相关问题