【问题标题】:Jenkins Pipeline - Run job on parallel on multiple remote hostsJenkins Pipeline - 在多个远程主机上并行运行作业
【发布时间】:2020-02-19 14:09:11
【问题描述】:

我有一个字符串参数 Name = "HOST" 的 Jenkins 工作。我正在尝试通过连接到主机来远程运行一个脚本。它工作正常。同样,如果我在 HOST 参数中输入多个主机名,则作业必须在这些多台机器上并行运行。如何做到这一点?

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

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-groovy jenkins-cli


    【解决方案1】:

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

    管道示例:

     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 代码的新手,我发现很难实现这个逻辑。您能否与我分享实现此目的的替代方法。感谢您的帮助!
    • 不客气。如果你提供一个你已经尝试过但没有成功的例子,我会试着找出问题所在。
    【解决方案2】:

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

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

    Blue Ocean imaging

    这样做的缺点是您无法创建具有多个相互依赖的任务的真正管道。我也在寻找这个问题的答案..How to loop parametrized parallel stages in Jenkins declarative pipeline

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多