Jenkins Pipeline - параллельное выполнение заданий на нескольких удаленных хостах - PullRequest
1 голос
/ 19 февраля 2020

У меня есть задание Jenkins со строковым параметром Name = "HOST". Я пытаюсь запустить один скрипт удаленно, подключившись к хосту. Работает нормально. Точно так же, если я введу несколько имен хостов в параметре HOST, задание должно выполняться на этих нескольких машинах параллельно. Как этого добиться?

Если у кого-нибудь есть код для этого, пожалуйста, поделитесь. Цените эту помощь!

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Простой способ запустить задание на разных машинах параллельно - это использовать декларативную матрицу .

Пример конвейера:

 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'] параллельно.

Обратите внимание, что декларативная матрица является встроенной декларативной функцией конвейеров, поэтому дополнительная установка плагина не требуется.

0 голосов
/ 24 февраля 2020

Из-за невозможности параметризации значений осей матрицы, это может быть одним из подходов (декларативный синтаксис конвейера с блоком сценария):

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

Отображение в синем океане

Недостатком этого является то, что вы не можете сделать реальный конвейер с несколькими задачами, зависящими друг от друга. Я тоже ищу ответ на этот вопрос .. Как l oop параметризовать параллельные этапы в декларативном конвейере Дженкинса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...