Назад | Перейти на главную страницу

Используйте Jenkins DSL, чтобы указать исполняемый файл Git в узле scm github

Я конвертирую некоторые задания Jenkins в сценарии DSL.

Некоторые из них используют github для SCM, и, поскольку это поддерживается DSL, это достаточно легко настроить. Однако после более чем 100 преобразований заданий мне впервые нужно указать исполняемый файл Git (до сих пор все задания использовали значение по умолчанию), и, похоже, нет способа сделать это. В файле job.xml показано следующее:

<scm class="hudson.plugins.git.GitSCM" plugin="git@2.4.4">
<configVersion>2</configVersion>
<userRemoteConfigs>...</userRemoteConfigs>
<branches>...</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<gitTool>Ubuntu Git</gitTool>
<submoduleCfg class="list"/>
<extensions>
<hudson.plugins.git.extensions.impl.SparseCheckoutPaths>
<sparseCheckoutPaths>
<hudson.plugins.git.extensions.impl.SparseCheckoutPath>
<path>
octane.pricing/octane.trader/server/work/mif_interface/cfg
</path>
</hudson.plugins.git.extensions.impl.SparseCheckoutPath>
</sparseCheckoutPaths>
</hudson.plugins.git.extensions.impl.SparseCheckoutPaths>
</extensions>
</scm>

Я могу делать все это, используя DSL, кроме <gitTool>Ubuntu Git</gitTool>.

Это не упоминается в DSL, поэтому я предполагаю, что это не поддерживается, поэтому я попытался использовать блок настройки (помня, что я все еще учусь, как его использовать). Пробовал несколько вещей, но я больше всего ожидал, что сработает:

  configure { project ->
    project << 'hudson.plugins.git.GitSCM' {
      paramDefs << 'gitTool' {
        string('Ubuntu Git')
        }
     }
  }

Но никаких кубиков - XML ​​по-прежнему показывает вариант «по умолчанию».

Я удивлен, что это нельзя указать прямо в DSL, но может ли кто-нибудь увидеть, что я делаю не так с этим блоком конфигурации?

В соответствии с моим комментарием выше на вопрос был дан ответ в Stackoverflow, но я все равно включу ответ здесь.

Наилучший вариант - использовать вложенный блок конфигурации контекста Git SCM:

job('example') {
  scm {
    git {
      remote {
        github('owner/repo')
      }
      configure { scmNode ->
        scmNode / gitTool('Ubuntu Git')
      }
    }
  }
}