Jenkins
使用 Jenkins DSL 在 github scm 節點中指定一個 Git 執行檔
我正在將一些 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 中沒有提到,所以我認為這不受支持,所以我嘗試使用 configure 塊(請記住,我仍在學習如何使用它)。嘗試了一些事情,但我最期望的工作:
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') } } } }