В сценарии развертывания мне нужно создать и запустить задачу jenkins в списке хостов, т. Е. Создать что-то вроде параметризованной задачи (где ip-адрес является параметром) или задание на Multijob Plugin с осью HOST, но выполняется только 2 из них параллельны по нескольким хостам.
Один из вариантов может заключаться в том, чтобы запускать доступный со списком хостов, но я хотел бы видеть статус для каждого хоста отдельно и повторно запускать работу jenkins, если это необходимо.
Основной вариант - использовать Job DSL Plugin или Pipeline Plugin, но здесь мне нужна помощь, чтобы понять, какие классы/методы кода dsl groovy должны использоваться для достижения этого.
Может ли кто-нибудь помочь?Задача Jenkins для удаленных хостов
ответ
Предположим, что хосты уже настроены как подчиненные Jenkins. Предположим, что хосты предоставлены в параметре задания трубопровода HOSTS
как список, разделенный пробелами. Следующий пример поможет вам начать:
def hosts_pairs = HOSTS.split().collate(2)
for (pair in host_pairs) {
def branches = [:]
for (h in pair) {
def host = h // fresh variable per iteration; it will be mutated
branches[host] = {
stage(host) {
node(host) {
// do the actual job here, e.g.
// execute a shell script
sh "echo hello world"
}
}
}
}
parallel branches
}
не могли бы вы прояснить, пожалуйста, одно очко, AFA, я не уверен в отличном состоянии: должен ли он коллапс вместо сортировки? – yvs
Нет, сортировка правильная. Он разделит список на под-списки заданного размера. Например. здесь, если у вас есть строка 'HOSTS =" foo bar baz qux "', после 'split()' у вас будет плоский список '[" foo "," bar "," baz "," qux "]' и после ' collate (2) 'у вас будет список списков' [["foo", "bar"], ["baz", "quz"]] '. – jil
Сочетание Matrix project и Throttle Concurrent Builds Plugin возможно.
Все, что вам нужно, это установить одну определяемую пользователем ось (например, «targetHost») со всеми IP-адресами в качестве значений и установить требуемое регулирование в разделе «Дроссельные параллельные сборки» (обратите внимание, что вам нужно включить «Выполнить» параллельная сборка в случае необходимости ", чтобы указать jenkins разрешить одновременное выполнение).
Значения осей доступны во время каждого дочернего элемента в соответствующей переменной окружения (например, targetHost
).
Ниже приведен пример config.xml с простым пингом & ожидания шага сборки:
<?xml version='1.0' encoding='UTF-8'?>
<matrix-project plugin="[email protected]">
<actions/>
<description></description>
<keepDependencies>false</keepDependencies>
<properties>
<hudson.plugins.throttleconcurrents.ThrottleJobProperty plugin="[email protected]">
<maxConcurrentPerNode>2</maxConcurrentPerNode>
<maxConcurrentTotal>2</maxConcurrentTotal>
<categories class="java.util.concurrent.CopyOnWriteArrayList"/>
<throttleEnabled>true</throttleEnabled>
<throttleOption>project</throttleOption>
<limitOneJobWithMatchingParams>false</limitOneJobWithMatchingParams>
<matrixOptions>
<throttleMatrixBuilds>true</throttleMatrixBuilds>
<throttleMatrixConfigurations>true</throttleMatrixConfigurations>
</matrixOptions>
<paramsToUseForLimit></paramsToUseForLimit>
</hudson.plugins.throttleconcurrents.ThrottleJobProperty>
</properties>
<scm class="hudson.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>true</concurrentBuild>
<axes>
<hudson.matrix.TextAxis>
<name>targetHost</name>
<values>
<string>127.0.0.1</string>
<string>127.0.0.2</string>
<string>127.0.0.3</string>
<string>127.0.0.4</string>
<string>127.0.0.5</string>
</values>
</hudson.matrix.TextAxis>
</axes>
<builders>
<hudson.tasks.Shell>
<command>sleep 7
ping -c 7 $targetHost
sleep 7</command>
</hudson.tasks.Shell>
</builders>
<publishers/>
<buildWrappers/>
<executionStrategy class="hudson.matrix.DefaultMatrixExecutionStrategyImpl">
<runSequentially>false</runSequentially>
</executionStrategy>
</matrix-project>
Успехов!
- 1. История bash для удаленных хостов
- 2. Сбор/подсчет удаленных хостов
- 3. Как установить переменные среды для удаленных хостов
- 4. Обработка DoS из-за невосприимчивых удаленных хостов
- 5. Сделать Jenkins невидимым для удаленных пользователей
- 6. PhpStorm возобновить последние использованные файлы удаленных хостов
- 7. Задача переднего плана Jenkins
- 8. [Jenkins] -Как использовать репозиторий удаленных хостов (то есть другие компьютерные файлы) вместо использования репозитория github?
- 9. Как создать игру Ansible для получения версий ОС удаленных хостов?
- 10. Выполнение команды PowerShell для нескольких удаленных хостов и эффективное отображение
- 11. Разработка плагинов Jenkins - получить IP-адрес хостов
- 12. Запуск сборки jenkins при завершении задания удаленных jenkins
- 13. Копирование одного файла на несколько удаленных хостов параллельно по SFTP
- 14. Свойства файла Spinnaker от удаленных jenkins
- 15. Сколько удаленных узлов может управлять Jenkins
- 16. Как использовать встроенный веб-сервер PhpStorm при настройке удаленных хостов?
- 17. пинга не -a разрешение имен хостов удаленных компьютеров
- 18. Разнообразны ли трубопроводные трубы Jenkins для удаленных триггеров?
- 19. Устранение имен удаленных хостов в IP-адресах в кодовом имени
- 20. Задача Jenkins с Trigger one build для файла свойства
- 21. Как достичь построения трубопровода через несколько главных хостов Jenkins?
- 22. Переместить файл из контейнера Docker в систему хостов в Jenkins
- 23. Какая задача градации вытягивает зависимости из удаленных репозиториев?
- 24. Как согласовать тесты в удаленных машинах с Jenkins?
- 25. Fiddler Echo Service для альтернативных имен хостов
- 26. Как заставить apache использовать разные IP-адреса для получения данных с удаленных хостов
- 27. Протокол TURN: Разрешения для удаленных пользователей
- 28. jenkins, как запустить несколько удаленных заданий без остановки при сбое
- 29. Jenkins: клонирование удаленных git-хранилищ с использованием https не удалось
- 30. Настройка списка хостов для ткани из файла внешних хостов
Не можете ли вы использовать [Матричный проект] (https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project) с осью для IP-адресов? – vlp
@vlp Возможно, да, но как запустить только 2 параллельно, а не все? – yvs
Я никогда не использовал его, но [Throttle Concurrent Builds Plugin] (https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin) может работать. Он должен поддерживать дросселирование матричных сборок (упоминается в списке изменений). Удачи! – vlp