使用声明性语法跨不同节点运行Jenkins并行阶段

使用声明性语法跨不同节点运行Jenkins并行阶段,jenkins,parallel-processing,jenkins-pipeline,distributed,Jenkins,Parallel Processing,Jenkins Pipeline,Distributed,成功地在同一个节点上并行运行集成测试,现在我想将它们分布在不同的节点上。在下面的示例中,我希望阶段IT 1和IT 2在不同的节点上运行,而IT 3在原始节点上运行。通过使用node作为stage('IT 1')的父级和node作为子级,尝试了几种组合,但两种组合都出现语法错误。实现这一点的正确语法是什么 pipeline { agent { label '!master' } stages { stage('Integration Tests') { parall

成功地在同一个节点上并行运行集成测试,现在我想将它们分布在不同的节点上。在下面的示例中,我希望阶段
IT 1
IT 2
在不同的节点上运行,而
IT 3
在原始节点上运行。通过使用
node
作为
stage('IT 1')
的父级和
node
作为子级,尝试了几种组合,但两种组合都出现语法错误。实现这一点的正确语法是什么

pipeline {

  agent { label '!master' }

  stages {
    stage('Integration Tests') {
      parallel {
        stage('IT 1 (slow)') {
          steps {
            sh 'run-it-1.sh'
          }
        }
        stage('IT 2 (slow)') {
          steps {
            sh 'run-it-2.sh'
          }
        }
        stage('IT 3 (quick)') {
          steps {
            sh 'run-it-3.sh'
          }
        }
      }
    }
  }
}
编辑:使用
标签
而不是
节点
适用于声明性管道。示例如下:

stage('IT 1 (slow)') {
  agent { label '!master' }
  steps {
    sh 'run-it-1.sh'
  }
}

自声明性版本1.2以来,您可以直接声明要用于每个并行阶段的代理类型:

没有测试这个特定的用例,但是我假设如果没有为阶段“IT3”声明任何代理{},它将在原始节点上执行


希望能有所帮助。

谢谢。我仍在尝试确认,但我的问题似乎来自于使用
节点
而不是
标签
。From:“代理用于声明性管道,节点用于脚本化管道”。