Jenkins

使用 Jenkins DSL 在 github scm 節點中指定一個 Git 執行檔

  • January 17, 2017

我正在將一些 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')
     }
   }
 }
}

引用自:https://serverfault.com/questions/823904