使用Jenkins DSL在github scm节点中指定一个Git可执行文件

我正在将一些Jenkins作业转换成DSL脚本。

其中一些使用github进行SCM,并且由DSL支持,这很容易configuration。 但是,经过超过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> 

除了<gitTool>Ubuntu Git</gitTool>之外,我可以使用DSL来完成所有这些工作。

这在DSL中没有提到,所以我认为这是不支持的,所以我尝试使用configuration块(铭记我还在学习如何使用)。 试了几件事,但我最期待的一件事:

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

但没有骰子 – XML仍然显示“默认”选项。

我很惊讶这不能直接在DSL中指定,但任何人都可以看到我在做什么configuration块的错误?

根据我上面的评论,这个问题已经在Stackoverflow上得到了解答,但是我仍然会在这里包含答案。

最好的select是使用Git SCM上下文的嵌套configuration块:

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