Use o DSL do Jenkins para especificar um executável do Git em um nó github scm

1

Estou convertendo alguns trabalhos do Jenkins em scripts DSL.

Algumas delas usam o github para SCM e, como isso é suportado pela DSL, isso é fácil de configurar. No entanto, depois de mais de 100 conversões de emprego, pela primeira vez eu preciso especificar um executável Git (todos os trabalhos até agora usaram o padrão) e não parece haver uma maneira de fazer isso. O job.xml mostra isso:

<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>

Eu posso fazer tudo isso usando o DSL, além de <gitTool>Ubuntu Git</gitTool> .

Isso não é mencionado no DSL, então eu presumo que isso não é suportado, então eu tentei usar o bloco configure (tendo em mente que eu ainda estou aprendendo exatamente como usar isso). Tentei algumas coisas, mas a que eu mais esperava trabalhar:

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

Mas não há dados - o XML ainda mostra a opção "padrão".

Estou surpreso que isso não possa ser especificado diretamente na DSL, mas alguém pode ver o que estou fazendo de errado com esse bloco de configuração?

    
por shaneoh 03.01.2017 / 17:08

1 resposta

0

De acordo com o meu comentário acima, a pergunta foi respondida no Stackoverflow, mas incluirei a resposta aqui mesmo assim.

A melhor opção é usar o bloco de configuração aninhado do contexto Git SCM:

job('example') {
  scm {
    git {
      remote {
        github('owner/repo')
      }
      configure { scmNode ->
        scmNode / gitTool('Ubuntu Git')
      }
    }
  }
}
    
por 17.01.2017 / 09:18

Tags