Расположение инструментов узла не сохраняется должным образом в Jenkins - PullRequest
0 голосов
/ 17 января 2019

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

import hudson.tools.*
import hudson.slaves.*
import jenkins.model.Jenkins

def jenkins = Jenkins.instance
def computers = jenkins.slaves

computers.each{ 
  println "${it.displayName} ${it.nodeName}"
  it.labelString = "blabla"
  println "${it.labelString}"

  def gitToolDescriptor = Jenkins.getInstance().getDescriptor("hudson.plugins.git.GitTool")
  def toolLocation = new ToolLocationNodeProperty.ToolLocation(gitToolDescriptor, " ", "/usr/bin/git")
  def toolLocationProperty = new ToolLocationNodeProperty(toolLocation as List)
  it.nodeProperties.add(toolLocationProperty)
  it.save()
}

Расположение путей задано правильно при проверке конфигурации Node через пользовательский интерфейс Jenkins. Тем не менее, кажется, что пути не обновляются должным образом, так как, когда я пытаюсь клонировать репо на ведомом устройстве, я получаю:

/ usr / local / git / bin / git rev-parse --is-inside-work-tree # timeout = 10

Мне нужно вернуться к конфигурации узла и вручную нажать кнопку «Сохранить», и путь обновится правильно.

/ usr / bin / git rev-parse refs / remotes / origin /

Любые подсказки приветствуются!

1 Ответ

0 голосов
/ 17 января 2019

Решено пока что. Может быть, поможет кому-то еще в будущем. Проблема заключалась в том, что все ведомые объекты, которые я получал, имели тип SwarmSlave, поэтому мне пришлось сначала выполнить безопасное приведение типа Node slave = it.asNode(). И Бинго!

...