使用 Jenkins DSL 在 github scm 节点中指定一个 Git 可执行文件
Use Jenkins DSL to specify a a Git executable in a github scm node
我正在将一些 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>
除了 <gitTool>Ubuntu Git</gitTool>
之外,我可以使用 DSL 完成所有这些工作。
DSL 中没有提到这一点,所以我认为这不受支持,所以我尝试使用配置块(请记住,我仍在学习如何使用它)。尝试了一些东西,但我最期待的是:
configure { project ->
project << 'hudson.plugins.git.GitSCM' {
paramDefs << 'gitTool' {
string('Ubuntu Git')
}
}
}
但是没有骰子 - XML 仍然显示 "default" 选项。
我很惊讶这不能直接在 DSL 中指定,但是任何人都可以看到我在配置块中做错了什么吗?
最佳选择是使用 Git SCM 上下文的嵌套配置块:
job('example') {
scm {
git {
remote {
github('owner/repo')
}
configure { scmNode ->
scmNode / gitTool('changeme')
}
}
}
}
请参阅作业 DSL wiki 中的 configure in the Job DSL API Viewer and more info about the Configure Block。
我正在将一些 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>
除了 <gitTool>Ubuntu Git</gitTool>
之外,我可以使用 DSL 完成所有这些工作。
DSL 中没有提到这一点,所以我认为这不受支持,所以我尝试使用配置块(请记住,我仍在学习如何使用它)。尝试了一些东西,但我最期待的是:
configure { project ->
project << 'hudson.plugins.git.GitSCM' {
paramDefs << 'gitTool' {
string('Ubuntu Git')
}
}
}
但是没有骰子 - XML 仍然显示 "default" 选项。
我很惊讶这不能直接在 DSL 中指定,但是任何人都可以看到我在配置块中做错了什么吗?
最佳选择是使用 Git SCM 上下文的嵌套配置块:
job('example') {
scm {
git {
remote {
github('owner/repo')
}
configure { scmNode ->
scmNode / gitTool('changeme')
}
}
}
}
请参阅作业 DSL wiki 中的 configure in the Job DSL API Viewer and more info about the Configure Block。