Как использовать плагин параметра NodeLabel в декларативном конвейере - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь преобразовать свою вольную работу в декларативную конвейерную работу, так как конвейер обеспечивает большую гибкость. Я не могу понять, как использовать плагин параметра NodeLabel (однако https://wiki.jenkins.io/display/JENKINS/NodeLabel+Parameter+Plugin) в конвейере.

pipeline {
agent any

parameters {
    // Would like something like LabelParameter here
}

stages {
    stage('Dummy1') {
        steps {
            cleanWs()
            sh('ls')
            sh('pwd')
            sh('hostname')
        }
    }
    stage('Dummy2') {
        steps {
            node("comms-test02") {
                sh('ls')
                sh('pwd')
                sh('hostname')
            }
        }
    }
}

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

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

В качестве альтернативы я попытался использовать команду 'node' (https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#-node- allocate node). Но это оставляет меня с двумя работающими работами, которые при работе выглядят не очень красиво.

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

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

1 Ответ

0 голосов
/ 12 апреля 2019

Допустим, вы добавили параметр (скажем, с именем slaveName), используя плагин NodeLabel в своем конвейере. Теперь вам нужно извлечь значение slaveName и передать его в поле агента-> узел-> метка.

Вы можете указать узел, используя свойство узла внутри агента. Как это -

agent
{
    node
    {
        label "${slaveName}"
    }
}
...