Трубопровод Jenkins работает на нескольких ведомых устройствах - PullRequest
1 голос
/ 08 мая 2020

Мне нужно поработать на двух разных ведомых устройствах. Единственный пример founs:

stages {
    parallel {
        stage('Test On slave1') {
            agent {
                label "slave1"
            }
            steps {
                sh "echo 'Hello from slave1'"
                ....
            }

        }
        stage('Test On slave2') {
            agent {
                label "slave2"
            }
            steps {
                sh "echo 'Hello from slave2'"
                ....
            }
        }
    }
}

Но код реплицируется для каждого ведомого устройства. Поскольку работа одинакова для всех ведомых устройств, как я могу определить свою работу только один раз для запуска на разных ведомых устройствах параллельно? Спасибо.

1 Ответ

0 голосов
/ 08 мая 2020

Я считаю, что предпочитаю реализацию конвейерной обработки сценариями декларативной. Это дает мне немного больше контроля и доступа к функциям языка groovy. Одна из таких особенностей - закрытие. В этой области я бы подошел к проблеме аналогично тому, что у меня ниже.

#!groovy

//A map of String -> Closure that will be run in parallel
def parallelActions = [:]
parallelActions['agent1 test'] = newAgentAction('slave1')
parallelActions['agent2 test'] = newAgentAction('slave2')

stage ('running parallel actions') {
   parallel parallelActions
}

//Function builds common behavior and returns a closure (a function as an object)
def newAgentAction(agentLabel) {
  return { ->
      node (agentLabel) {
        echo "exectuting on ${agentLabel}"
      }
  }
}

Обратите внимание, что я намеренно не поместил сцену внутри параллельных блоков. В зависимости от того, какие плагины вы используете для визуализации, имея параллельные этапы, порядок рендеринга этапов может быть ненадежным и принудительно привести к постоянному значению stage redr aws.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...