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

时间:2017-12-07 12:35:43

标签: jenkins parallel-processing jenkins-pipeline distributed

管理成功在同一节点上并行运行集成测试,现在我想将它们分布在不同的节点上。在下面的示例中,我希望阶段IT 1IT 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 个答案:

答案 0 :(得分:2)

从声明版本1.2开始,您可以直接声明要用于每个并行阶段的代理类型:This is what i get after running react-native run android

未测试此特定用例,但我假设如果您没有为阶段“IT 3”声明任何代理{} ,它将在原始节点上执行。

希望它有所帮助。