使用声明性语法跨不同节点运行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:“代理用于声明性管道,节点用于脚本化管道”。