我正在将一些 Jenkins 工作转换为 DSL 脚本。
其中一些将 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>
除了<gitTool>Ubuntu Git</gitTool>
.
这在 DSL 中没有提到,所以我认为这不受支持,所以我尝试使用 configure 块(请记住,我仍在学习如何使用它)。尝试了一些事情,但我最期望的工作:
configure { project ->
project << 'hudson.plugins.git.GitSCM' {
paramDefs << 'gitTool' {
string('Ubuntu Git')
}
}
}
但没有骰子 - XML 仍然显示“默认”选项。
我很惊讶这不能直接在 DSL 中指定,但是任何人都可以看到我在配置块中做错了什么吗?
根据我上面的评论,该问题已在 Stackoverflow 上得到解答,但无论如何我都会在此处提供答案。
最好的选择是使用 Git SCM 上下文的嵌套配置块: