Jenkins管道-在多个远程主机上并行运行作业

Jenkins管道-在多个远程主机上并行运行作业,jenkins,jenkins-pipeline,jenkins-groovy,jenkins-cli,Jenkins,Jenkins Pipeline,Jenkins Groovy,Jenkins Cli,我有一个Jenkins作业,字符串参数Name=“HOST”。我正试图通过连接到主机远程运行一个脚本。它很好用。类似地,如果在host参数中输入多个主机名,则作业必须在这些多台计算机上并行运行。如何做到这一点 如果有人对此有任何代码,请分享。谢谢你的帮助 在不同机器上并行运行作业的简单方法是使用 管道示例: pipeline { agent none stages { stage('Matrix stage') {

我有一个Jenkins作业,字符串参数Name=“HOST”。我正试图通过连接到主机远程运行一个脚本。它很好用。类似地,如果在host参数中输入多个主机名,则作业必须在这些多台计算机上并行运行。如何做到这一点


如果有人对此有任何代码,请分享。谢谢你的帮助

在不同机器上并行运行作业的简单方法是使用

管道示例:

 pipeline {
        agent none
        stages {
            stage('Matrix stage') {
                matrix {
                    agent {
                        label "${NODE}"
                    }
                    axes {
                        axis {
                            name 'NODE'
                            values 'node1', 'node2', 'node3'
                        }
                    }
                    stages {
                        stage('Parallel stage') {
                            steps {
                                echo "Run on ${NODE}"
                            }
                        }
                    }
                }
            }
        }
    }
此管道将并行执行['node1'、'node2'、'node3']上定义的阶段


请注意,声明性矩阵是本机声明性管道功能,因此无需额外安装插件。

由于无法参数化矩阵轴值,这可能是一种方法(带有脚本块的声明性管道语法):


这样做的缺点是,您无法使多个任务相互依赖的真正管道。我也在寻找这个问题的答案。

谢谢你的指点。由于我是这个管道groovy代码的新手,我发现很难实现这个逻辑。你能告诉我实现这一目标的替代方法吗。谢谢你的帮助!不客气。如果你提供一个你已经尝试过但没有成功的例子,我会尝试找出错误所在。
def deploys = [:]
def servers = ['host1','host2','host3']

pipeline {
    agent any
    stages {
        stage ('Deploying multiple hosts') {    
            steps {
                script {
                    servers.each { server ->
                        deploys[server] = {
                            sh "echo run stuff.."
                        }
                    }
                    parallel deploys
                }
            }
        }
    }
}