所有节点上同时运行詹金斯工作

问题描述 投票:23回答:8

我有一个大组具有相同标签的节点。我想能够运行在詹金斯一份工作,对所有具有相同标签的节点以及这样做的同时执行。

我看到了一个建议,使用在詹金斯的矩阵配置选项,但我只能想到一个轴(标签组)。当我尝试和运行工作,现在看来似乎只执行一次,而不是300次(1为每个标签组中的节点)。

我应该我其他的轴是什么?还是......有一些插件来做到这一点?我曾试图NodeLabel参数插件,选择“所有可用的网络节点上运行”,但它似乎并没有同时运行的作业。

jenkins jenkins-plugins
8个回答
7
投票

15
投票
  1. 安装 Parameterized Trigger Plugin NodeLabel Parameter Plugin
  2. 对于要运行的作业,使执行并发建立必要时
  3. 创建另一个工作除了工作,你想在所有的从属服务器中运行,并将其配置 构建>添加构建步骤>触发/呼叫建立在其他项目 添加ParameterFactories>所有节点的标签厂>标签:在一个节点的标签

13
投票

矩阵的构建将工作;使用“奴隶”为轴心,拓展“个人节点”列表中选择所有节点。

请注意,您将需要每次添加或删除从时间来更新选项。

对于一个更易于维护的解决方案,你可以使用Job DSL plugin建立具有用于构建的模板,然后每个从遍历并创建构建标签设置为从属名称的新工作种子工作。


11
投票

还有就是你需要两个插件:Paramitrized Trigger Plugin能够触发其他工作作为你的主要工作构建步骤,并NodeLabel Plugin(阅读你所需要的descrition部分BuildParameterFactory)以指定标签。


9
投票

做到这一点的最好和最简单的方法是使用Elastic Axis插件。 1.安装pulgin。 2.创建一个多配置工作。(如果安装不存在) 3.在作业的配置,你可以找到新的轴加入弹性轴。添加标签,如下图所示,以获得多从作业运行。


7
投票

明白了 - 不需要任何特殊的插件!

我已经创建了一个触发/调用另一个构建父作业,而当我打电话给他,我传给他,我wan't孩子作业运行上的标签。

所以基本上父作业只有触发我需要这份工作,和孩子作业运行多次,在该标签奴隶的数量(在我的情况下的4倍)。


6
投票

采取一些上面的答案,并调整它们的2.0系列。

现在,您可以启动所有节点上的所有工作。

// The script triggers PayloadJob on every node.
// It uses Node and Label Parameter plugin to pass the job name to the payload job.
// The code will require approval of several Jenkins classes in the Script Security mode
def branches = [:]
def names = nodeNames()
for (int i=0; i<names.size(); ++i) {
  def nodeName = names[i];
  // Into each branch we put the pipeline code we want to execute
  branches["node_" + nodeName] = {
    node(nodeName) {
      echo "Triggering on " + nodeName
      build job: 'PayloadJob', parameters: [
              new org.jvnet.jenkins.plugins.nodelabelparameter.NodeParameterValue
                  ("TARGET_NODE", "description", nodeName)
          ]
    }
  }
}

// Now we trigger all branches
parallel branches

// This method collects a list of Node names from the current Jenkins instance
@NonCPS
def nodeNames() {
  return jenkins.model.Jenkins.instance.nodes.collect { node -> node.name }
}

从代码https://jenkins.io/doc/pipeline/examples/#trigger-job-on-all-nodes


1
投票

使This project is parameterized,添加类型Label的参数,以便在标签输入一个任意名称并选择一个缺省值,比如覆盖多个节点或这样的标记的一个一起选择(&&)的标签。启用Run on all nodes matching the label,保持Run regardless of result,在Node eligibility保持All nodes

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.