繁体   English   中英

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

[英]Run Jenkins parallel stages across different nodes using declarative syntax

设法成功地在同一节点上并行运行集成测试,我现在想将它们分布在不同的节点上。 在下面的示例中,我希望阶段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'
  }
}

从Declarative 1.2版开始,您可以直接声明要在每个并行阶段使用的代理类型: https//jenkins.io/blog/2017/09/25/declarative-1/

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

希望它会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM