use*_*467 24 jenkins jenkins-plugins
我有一大组具有相同标签的节点.我希望能够在Jenkins中运行一个在具有相同标签的所有节点上执行的作业,以及同时执行此操作.
我看到了在Jenkins中使用矩阵配置选项的建议,但我只能想到一个轴(标签组).当我尝试运行该作业时,它似乎只执行一次而不是300次(该标签组中的每个节点都有1次).
我的另一个轴应该是什么?或者......是否有一些插件可以做到这一点?我曾尝试过NodeLabel参数插件,并选择"在所有可用的在线节点上运行",但似乎并没有同时运行这些作业.
thS*_*oft 15
小智 12
您需要两个插件:Paramitrized Trigger Plugin,能够触发其他作业作为主要作业的构建步骤,以及NodeLabel插件(请阅读BuildParameterFactory部分以了解您需要的内容)来指定标签.
Amo*_*kar 10
实现此目的的最佳和最简单的方法是使用Elastic Axis插件.
1.安装喷嘴.
2.创建多配置作业.(如果不存在则安装)
3.在作业配置中,您可以找到添加为弹性轴的新轴.添加如下所示的标签,以便在多个从站上运行作业.

我正在寻找一种docker system prune在所有节点上运行的方法(带有标签docker)。我以一个非常简单的脚本化管道结束,据我所知,它只需要管道插件即可工作:
#!/usr/bin/env groovy
def nodes = [:]
nodesByLabel('docker').each {
nodes[it] = { ->
node(it) {
stage("docker-prune@${it}") {
sh('docker system prune -af --filter "until=1440h"')
}
}
}
}
parallel nodes
Run Code Online (Sandbox Code Playgroud)
注意:需要管道实用程序步骤
它的作用是查找带有 label 的所有节点docker,然后对其进行迭代并创建一个关联数组,nodes每个找到的节点一个步骤(准确地说,它所做的是清理所有早于 60 天的旧 docker 内容)。parallel nodes开始并行执行(同时在所有找到的节点上)。
希望这会对某人有所帮助。
知道了 - 不需要任何特殊的插件!
我已经创建了一个触发/调用另一个构建的父作业,而当我打电话给他时,我将标签告诉他,这不是我要做的孩子的工作.
所以基本上父作业只触发我需要的作业,子作业将运行与该标签中的从属数量相同的次数 (在我的情况下为4次).

取以上几个答案并将其调整为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 }
}
Run Code Online (Sandbox Code Playgroud)
取自代码 https://jenkins.io/doc/pipeline/examples/#trigger-job-on-all-nodes
| 归档时间: |
|
| 查看次数: |
37099 次 |
| 最近记录: |