I have a somehow outdated Jenkins instance where we have a lot of jobs automated by JobDSL. As a preparation for an upcoming Jenkins upgrade we try to move our very last manually defined job to JobDSL.
- Jenkins 1.651.3
- JobDSL 1.50
- Git Plugin 2.4.2
We try to create a pipeline job with the following snippet:
scm {
git {
remote {
credentials '3289472389479'
url 'https://....'
}
branch config[context.config.environmentProfile].branch
extensions {
cleanBeforeCheckout()
}
}
}
This results in a job config where the SCM part looks like:
<scm class="hudson.plugins.git.GitSCM">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>https://....</url>
<credentialsId>3289472389479</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>*/develop</name>
</hudson.plugins.git.BranchSpec>
</branches>
<disableSubmodules>false</disableSubmodules>
<recursiveSubmodules>false</recursiveSubmodules> <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<authorOrCommitter>false</authorOrCommitter>
<clean>false</clean>
<wipeOutWorkspace>false</wipeOutWorkspace>
<pruneBranches>false</pruneBranches>
<remotePoll>false</remotePoll>
<ignoreNotifyCommit>false</ignoreNotifyCommit>
<gitTool>Default</gitTool>
<skipTag>true</skipTag>
<extensions>
<hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
</extensions>
</scm>
This job config seems to be somehow invalid. In this job we try to access the scm config using groovy but there is no scm object in the job's context. After saving the job's configuration once manually the job works and the job's config looks very different:
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="[email protected]">
<scm class="hudson.plugins.git.GitSCM" plugin="[email protected]">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>https://...</url>
<credentialsId>3289472389479</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>*/develop</name>
</hudson.plugins.git.BranchSpec>
</branches><doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg class="list"/>
<extensions>
<hudson.plugins.git.extensions.impl.CleanBeforeCheckout/>
</extensions>
</scm>
Has anybody experienced such a behavior? Currently this issue blocks us from upgrading our largest Jenkins instance.
Hints are very appreciated!
Update (exact differences):
When executing this groovy code currentBuild.rawBuild.parent.SCMs.size()
:
- Before save result is
0
- After save result is
1