【问题标题】:How to change the Agent label in Jenkins depending on Branch Name如何根据分支名称更改 Jenkins 中的代理标签
【发布时间】:2018-11-22 21:20:18
【问题描述】:

我正在为以下任务创建一个 Jenkins 管道。

  • 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'
            }
        }
    }
}

下面是管道的 Jenkins 作业配置快照

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

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

任何帮助都将不胜感激。

提前致谢。

【问题讨论】:

    标签: docker jenkins jenkins-plugins jenkins-pipeline


    【解决方案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'
            }
        }
     }
    }
    

    【讨论】:

    • 感谢您的回复。我已经在舞台内部实现了agnet。我正在寻找根据我从中提取代码的分支名称分配agent
    • 声明一个变量并根据分支名称附加值(标签名称)。然后将该变量用于代理。例如:代理{标签}。
    • 如何查看分行名称??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多