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

Jenkins工作流作业:限制它可以运行的位置,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有两个Jenkins工作流作业,它们以不同的参数启动同一个作业,即它们构建的分支。后一项工作在多个平台上构建项目。头作业(即Workflow作业)可以在不同的机器上启动。另外,设置中有两台linux机器 有时,它们中的一个会说,master在一台linux机器上启动,而另一台在另一台机器上启动。它们都必须在linux机器上构建一个目标,由于它们都很忙,所以两个作业都会暂停 对于普通作业,可以限制它们可以运行的位置,但是,我找不到如何限制工作流作业可以运行的位置。显然,它应该使用groovy脚本

我有两个Jenkins工作流作业,它们以不同的参数启动同一个作业,即它们构建的分支。后一项工作在多个平台上构建项目。头作业(即Workflow作业)可以在不同的机器上启动。另外,设置中有两台linux机器

有时,它们中的一个会说,master在一台linux机器上启动,而另一台在另一台机器上启动。它们都必须在linux机器上构建一个目标,由于它们都很忙,所以两个作业都会暂停

对于普通作业,可以限制它们可以运行的位置,但是,我找不到如何限制工作流作业可以运行的位置。显然,它应该使用groovy脚本来完成,但我不知道它到底有多准确


有解决方案吗?

这里有一个jenkins文件可以全局执行这是告诉jenkins整个管道必须在具有以下三个标签的从属设备上运行:

pipeline {
  agent { label 'docker && git && rbenv' }
  stages {
    stage('commit_stage') {
      steps {
        echo 'building stuff'
      }
    }
  }
}
您还可以通过节点步骤为任何阶段或阶段的一部分选择特定从属或特定功能:

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'
        }
      }
    }
  }
}