Скажите Jenkins, чтобы запустить конкретный проект на конкретном подчиненном узле


87

Как мне сказать, чтобы Дженкинс запустил конкретный проект для определенного раба?

Я настроил главный узел Jenkins и подчиненный узел, который хочу использовать для подготовки приложения. Но я не могу понять, как настроить проект для запуска на подчиненном узле, который я создал.


Ответы:


84

Установите флажок «Ограничить, где можно выполнить это задание» в конфигурации задания и укажите имя своего ведомого.

Если позже вы добавите больше подчиненных, вы можете установить метки для каждого подчиненного и указать их в своих настройках работы.

Смотрите эту справочную документацию:


Благодарю. Я использовал довольно долго, прежде чем нашел ваш ответ. Надо было добавить на эту страницу wiki.jenkins-ci.org/display/JENKINS/Distributed+builds
Surasin Tancharoen

16

Если вы запускаете конвейерное задание, вы сначала хотите добавить метку (например, «ведомый») к подчиненному узлу (или агенту, как кажется, он сейчас вызывается).

Затем в сценарии конвейера вы указываете метку, на которой выполняется задание:

Декларативный конвейер:

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

Скриптовый конвейер:

node (label: 'slave') {
    ...
}

Это задание теперь будет выполняться на любом узле с меткой «ведомый». Если вы хотите, чтобы работа выполнялась только на этом конкретном подчиненном устройстве, не используйте метку повторно. И, конечно, лейбл не обязательно должен быть «рабом»; это может быть что угодно.

Обновить:

В скриптовом конвейере, если ваш узел называется «Мой узел», вы также можете сделать это:

node ('My Node') {
    ...
}

Если вы хотите, чтобы блок кода работал только на этом конкретном узле, это полезно. Однако использование меток более гибко и может упростить добавление узлов для совместного использования рабочей нагрузки.


Это было так трудно найти, документация для скриптового синтаксиса умирает в пользу декларативного, я пока не могу перейти, так что спасибо!
Митчелл Керри

7

Если вы хотите использовать Node / Label в качестве параметра, установите NodeLabel Parameter Plugin


Обратите внимание, что если для задания выбрать параметр «Узел» и вы хотите вызвать его из Groovy, то вам нужно создать специальный параметр: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(вместо обычного StringParameterValue).
Nux
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.