Jenkins工作流程作业:限制它可以运行的位置

时间:2017-07-04 16:36:20

标签: jenkins jenkins-pipeline

我有两个Jenkins工作流作业,它们使用不同的参数启动相同的作业,即它们构建的分支。后一个工作在几个平台上构建项目。 “head”作业,即worklflow作业可以在不同的机器上启动。此外,设置中还有两台Linux机器。

有时会发生其中一个(例如,master)在其中一台Linux机器上启动,另一台在另一台机器上启动。他们两个都必须在linux机器上构建一个目标,因为它们都很忙,所以两个工作都停滞不前。

使用常规作业,可以限制它们可以运行的位置,但是,我找不到如何限制工作流作业可以运行的位置。显然,它应该使用groovy脚本来完成,但它完全逃脱了我。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

这是一个Jenkins文件全局地执行它(这告诉jenkins整个管道必须在带有这三个标签的slave上运行):

pipeline {
  agent { label 'docker && git && rbenv' }
  stages {
    stage('commit_stage') {
      steps {
        echo 'building stuff'
      }
    }
  }
}

您还可以通过node步骤为舞台的任何舞台或部分选择某个从属或某些功能:

pipeline {
  agent { label 'docker && git && rbenv' }
  stages {
    stage('commit_stage') {
      steps {
        // this overrides the top-level agent requirements
        node('linux_with_zsh') {
          echo 'building stuff'
        }
      }
    }
  }
}