Как я могу объявить несколько агентов в моем файле Jenkins, а затем ссылаться на них на последующих этапах?

Я пытаюсь запустить файл jenkins с несколькими агентами, но у меня возникают ошибки. Вот фрагмент моего файла jenkins:

pipeline {
    agent {
        docker {
            label 'agentAAA'
            ...
        }
        node {
            label 'agentBBB'
            ...
        }
    }
    ...
    stages {
        stage('to run on AAA') {
            agent {
                label 'agentAAA'
            }
            ...
        }
        stage('to run on BBB') {
            agent {
                label 'agentBBB'
            }
            ...
        }
        stage('to run on BBB') {
            agent {
                label 'agentBBB'
            }
            ...
        }

Я получаю следующие ошибки:

  • В разделе агентов разрешен только один тип агента.
  • Тип агента не указан. Должен быть одним из [any, docker, dockerfile, label, none]

Я не могу найти в документации примеров того, как обращаться к ранее объявленному агенту. Я вижу, как объявлять агент на каждом отдельном этапе, но в итоге в моем файле будет много повторяющихся объявлений.


person user2023861    schedule 03.07.2018    source источник


Ответы (1)


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

pipeline {
    agent none
    stages {

stage ('Stage-1'){
   agent {label 'agent-1'}
    steps{
        script{
        }
    }
   }   

stage ('Stage-2'){
   agent {label 'agent-2'}
    steps{
        script{
        }
    }
    }
}
}

Ссылка для получения дополнительных сведений - https://jenkins.io/doc/book/pipeline/jenkinsfile/#using-multiple-agents

person Mishi.Srivastava    schedule 04.07.2018
comment
@ mishi-srivastava Что, если я хочу запускать одни и те же задачи на двух машинах? это будет повторяться, правда? - person smc; 08.06.2019
comment
@smc в этом случае вы можете попробовать что-то вроде этого - агент {label 'small || medium'} в декларативном конвейере - person Mishi.Srivastava; 10.06.2019