Use Jenkins DSL to specify a a Git executable in a github scm node

1.2k views Asked by At

I'm converting some Jenkins jobs to DSL scripts.

Some of these use github for SCM and as this is supported by the DSL this is easy enough to configure. However, after over 100 job conversions, for the first time I need to specify a Git executable (all jobs so far have used the default) and there doesn't seem to be a way to do this. The job.xml shows this:

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

I can do all of this using the DSL apart from <gitTool>Ubuntu Git</gitTool>.

This isn't mentioned in the DSL so I presume this isn't supported so I tried using the configure block (bearing in mind I'm still learning exactly how to use that). Tried a few things but the one I most expected to work:

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

But no dice - the XML still shows the "default" option.

I'm surprised this can't be specified directly in the DSL but can anyone see what I am doing wrong with that configure block?

1

There are 1 answers

2
daspilker On BEST ANSWER

The best option is to use the nested configure block of the Git SCM context:

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

See configure in the Job DSL API Viewer and more info about the Configure Block in the Job DSL wiki.