如何在 Jenkins 文件中声明多个代理,然后在后续阶段引用它们?

use*_*861 2 jenkins jenkins-pipeline jenkins-declarative-pipeline

我正在尝试运行一个包含多个代理的 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'
            }
            ...
        }
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

  • 每个代理部分仅允许一种代理类型
  • 未指定代理类型。必须是 [any、docker、dockerfile、label、none] 之一

我在文档中找不到任何有关如何引用先前声明的代理的示例。我了解如何在每个单独的阶段声明代理,但最终我的文件中会出现许多重复的声明。

Mis*_*ava 5

您需要将整个管道的代理指定为“无”,然后您可以显式为每个阶段指定代理,如下例所示。根据需要填充详细信息。

pipeline {
    agent none
    stages {
        
        stage ('Stage-1') {
            agent { label 'agent-1' }
            steps {
                script {
                }
            }
        }
        
        stage ('Stage-2') {
            agent { label 'agent-2' }
            steps {
                script {
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅链接了解更多详细信息 - https://jenkins.io/doc/book/pipeline/jenkinsfile/#using-multiple-agents