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

87

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

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

Лорин Хохштайн
источник

Ответы:

84

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

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

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

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

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

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

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

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

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

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

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

Обновить:

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

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

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

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

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

Алекс Окрушко
источник
Обратите внимание, что если для задания выбрать параметр «Узел» и вы хотите вызвать его из Groovy, то вам нужно создать специальный параметр: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(вместо обычного StringParameterValue).
Nux