运行 Jenkins 使用声明性语法跨不同节点并行阶段
Run Jenkins parallel stages across different nodes using declarative syntax
已成功 运行 在同一节点上并行进行集成测试,现在我想将它们分布在不同的节点上。在下面的示例中,我希望阶段 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'
}
}
}
}
}
}
编辑:使用 label
而不是 node
适用于声明性管道。下面的示例:
stage('IT 1 (slow)') {
agent { label '!master' }
steps {
sh 'run-it-1.sh'
}
}
从声明式版本 1.2 开始,您可以直接声明要为每个并行阶段使用的代理类型:https://jenkins.io/blog/2017/09/25/declarative-1/
未测试此特定用例,但我假设如果您不为阶段 "IT 3" 声明任何 agent{},它将在原始节点。
希望对您有所帮助。
已成功 运行 在同一节点上并行进行集成测试,现在我想将它们分布在不同的节点上。在下面的示例中,我希望阶段 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'
}
}
}
}
}
}
编辑:使用 label
而不是 node
适用于声明性管道。下面的示例:
stage('IT 1 (slow)') {
agent { label '!master' }
steps {
sh 'run-it-1.sh'
}
}
从声明式版本 1.2 开始,您可以直接声明要为每个并行阶段使用的代理类型:https://jenkins.io/blog/2017/09/25/declarative-1/
未测试此特定用例,但我假设如果您不为阶段 "IT 3" 声明任何 agent{},它将在原始节点。
希望对您有所帮助。