Jenkins管道在多个从机上运行
我有一些工作需要在两个不同的奴隶身上运行。Foons的唯一例子是:Jenkins管道在多个从机上运行,jenkins,Jenkins,我有一些工作需要在两个不同的奴隶身上运行。Foons的唯一例子是: stages { parallel { stage('Test On slave1') { agent { label "slave1" } steps { sh "echo 'Hello from slave1'" ....
stages {
parallel {
stage('Test On slave1') {
agent {
label "slave1"
}
steps {
sh "echo 'Hello from slave1'"
....
}
}
stage('Test On slave2') {
agent {
label "slave2"
}
steps {
sh "echo 'Hello from slave2'"
....
}
}
}
}
但每个从机都会复制代码。既然所有从机的工作都是相同的,那么我如何在不同的从机上并行运行一次时定义我的工作呢?谢谢。我发现我更喜欢脚本化的管道实现,而不是声明式的。它让我对groovy语言的特性有了更多的控制和访问。其中一个特点就是闭包。在这一范围内,我将以与下文类似的方式处理这一问题
#!groovy
//A map of String -> Closure that will be run in parallel
def parallelActions = [:]
parallelActions['agent1 test'] = newAgentAction('slave1')
parallelActions['agent2 test'] = newAgentAction('slave2')
stage ('running parallel actions') {
parallel parallelActions
}
//Function builds common behavior and returns a closure (a function as an object)
def newAgentAction(agentLabel) {
return { ->
node (agentLabel) {
echo "exectuting on ${agentLabel}"
}
}
}
请注意,我并没有故意将舞台放在平行块内。根据您用于可视化的插件,具有并行阶段可能会使阶段的渲染顺序不可靠,并强制恒定的阶段重画。无论是蓝色还是红色的pill,欢迎使用。谢谢你的回复。但是我必须使用Groovy语言才能在两个从机上运行?难以置信的是,代理或节点指令不支持这一点。我不确定声明性格式是否不支持并行行为tbh。这就是我如何使用脚本语法解决它的。