2017-01-04 2 views
1

私はいくつかのJenkinsジョブをDSLスクリプトに変換しています。Jenkins DSLを使ってgitub scmノードにGit実行可能ファイルを指定する

これらのうちのいくつかはSCMにgithubを使用しています。これは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を使用してこのすべてを行うことができます。

これはDSLで言及されていないので、私はこれがサポートされていないと推測するので、configureブロックを使用しようとしました。いくつかのことをしようとしましたが、私はほとんどの仕事に期待1:

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

しかし、無サイコロは - XMLはまだ「デフォルト」オプションを示しています。

これはDSLで直接指定することはできませんが、誰かが私がconfigureブロックで間違っていることを見ることができますか?

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

は仕事DSL APIビューアでconfigureを参照し、ジョブDSLのwikiでConfigure Blockについての詳細情報:

答えて

2

最良のオプションは、GitのSCMのコンテキストのネストされたのconfigureブロックを使用することです。

+0

「scmNode」変数の値は何ですか?どのノードが参照するのですか?なぜですか? –

+0

これは[docs](https://jenkinsci.github.io/job-dsl-plugin/#path/job-scm-git-configure)で述べたように 'scm'ノードを参照します。 – daspilker

関連する問題