【问题标题】:Run Jenkins parallel stages across different nodes using declarative syntax使用声明性语法跨不同节点运行 Jenkins 并行阶段
【发布时间】:2018-05-21 13:48:24
【问题描述】:

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

【问题讨论】:

    标签: jenkins parallel-processing jenkins-pipeline distributed


    【解决方案1】:

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

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

    希望对您有所帮助。

    【讨论】:

    • 谢谢。我仍在尝试确认,但我的问题似乎来自使用node 而不是label。来自stackoverflow.com/questions/42050626/…“代理用于声明性管道,节点用于脚本化管道”.
    猜你喜欢
    • 2017-12-05
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多