How to specify Job DSL checkout timeout in Jenkins Git plugin? How to specify Job DSL checkout timeout in Jenkins Git plugin? jenkins jenkins

How to specify Job DSL checkout timeout in Jenkins Git plugin?


I had to change it like this with the pipeline as the CheckoutOption was not working for me

extensions: [[$class: 'CloneOption', timeout: 120]]

Full checkout code

checkout([$class: 'GitSCM', branches: [[name: '*/master']],            extensions: [[$class: 'CloneOption', timeout: 120]], gitTool: 'Default',             userRemoteConfigs: [[credentialsId: key, url: repo]]        ])


After some experimentation, I found the solution shown below.

RECAP

Checkout timeout can be set via Jenkins GUI (Configuration --> SCM --> Git --> Additional Behaviors --> Advanced Checkout Behaviors --> Timeout). I'd like to do the same in a Groovy script that generates Docker configurations for Jenkins. The script already sets clone timeout.

...public class DockerJob {...    multiscm {        git {            remote {                url(...)                branch(...)                ...            }            shallowClone()            cloneTimeout(60)            // Add "checkout timeout" here...        }        ...    }    ...}...

The obvious

...// "Checkout timeout"checkoutTimeout(60)...

did not work. Setting timeouts in general

...// "Checkout timeout"timeout(60)...

also did not work. Then comment on a web page lead to:

...// "Checkout timeout"extensions {    checkoutOptions {        timeout(60)    }}...

that also did not work. Finally...

SOLUTION

...public class DockerJob {...    multiscm {        git {            remote {                url(...)                branch(...)                ...            }            shallowClone()            cloneTimeout(60)            // "Checkout timeout"            configure { node ->                node / 'extensions' << 'hudson.plugins.git.extensions.impl.CheckoutOption' {                    timeout 60                }            }        }        ...    }    ...}...


How about using the workflow plugin and do something like this?

checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CheckoutOption', timeout: 100]], submoduleCfg: [], userRemoteConfigs: [[]]])