2017-01-04 9 views
1

Я конвертирую некоторые задания Jenkins в скрипты DSL.Использование Jenkins DSL для указания исполняемого файла Git в узле github scm

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

<scm class="hudson.plugins.git.GitSCM" plugin="[email protected]"> 
<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 (имея в виду, что я все еще точно знаю, как это использовать). Пытались несколько вещей, но одна я больше всего должен работать:

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

Но не кости - XML, все еще не показывает вариант «по умолчанию».

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

ответ

2

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

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

См configure в работы DSL API просмотра и больше информации о Configure Block в работы DSL вики.

+0

Какова ценность этой переменной «scmNode» - какой узел ссылается на нее и почему? –

+0

Он ссылается на узел 'scm', как указано в [docs] (https://jenkinsci.github.io/job-dsl-plugin/#path/job-scm-git-configure). – daspilker