Как изменить метку агента в Jenkins в зависимости от имени филиала - PullRequest
0 голосов
/ 13 июня 2018

Я создаю конвейер Jenkin для следующей задачи.

  • Извлекаем последний код из vsts
  • Создайте код и создайте файл .jar изэто
  • создание образа Docker на основе jar
  • тега образа
  • для этого вставка изображения в реестр 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 для Pipeline

enter image description here

Мой вопрос, как я могу изменитьметка агента в зависимости от имени ветви или некоторых условий.

например, если ветвь development Я хочу использовать slave1 узел и если ветвь production Я хочу использовать master

Любая помощь будет заметна.

Заранее спасибо.

1 Ответ

0 голосов
/ 14 июня 2018

Вы можете назначить метки операторов внутри стадии, чтобы можно было выполнять стадии с необходимыми агентами.

например:

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