Распределенная сборка в Jenkins - PullRequest
1 голос
/ 27 февраля 2020

У меня есть одно задание на выполнение теста в Дженкинс. Эта работа состоит из множества тестовых случаев, поэтому для сокращения времени сборки я хочу, чтобы она выполнялась распределенным образом. Предположим, что задание имеет 100 тестовых случаев, и если я запускаю сборку задания, то ведомое устройство 1 должно выполнить 50 проверочных случаев, а подчиненное устройство 2 должно выполнить оставшиеся 50 проверочных случаев. Как добиться этого сценария?

Заранее спасибо.

1 Ответ

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

С Jenkins Pipeline вы можете легко распределять рабочие задания между любым количеством агентов с помощью секции parallel. Пример Jenkinsfile выполнения того, что вы хотели, может выглядеть так:

pipeline {
    agent none 
    stages {
        stage('Tests') {
            parallel {
                stage('Tests1') {
                    agent { label 'slave1' }
                    steps {
                        echo "tests part 1"
                    }
                }
                stage('Tests2') {
                    agent { label 'slave2' }
                    steps {
                        echo "tests part 2"
                    }
                }
            }
        }
    }
}

Для более сложного сценария ios вы можете добавить matrix секцию в сочетании с помеченными агентами.

Предположим, у вас есть несколько рабов Jenkins с пометкой 'test-runner', и вы разбили свои тесты на 10 частей. С matrix вы можете запускать до 10 задач одновременно (ограничено количеством агентов):

pipeline {
    agent none
    stages {
        stage('Distribute Tests') {
            matrix {
                axes {
                    axis {
                        name 'PART'
                        values '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'
                    }
                }
                stages {
                    stage('Tests') {
                        agent { label 'test-runner' }
                        steps {
                            echo "tests part ${PART}"
                        }
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...