如何在Jenkins Git插件中指定作业DSL签出超时?

如何在Jenkins Git插件中指定作业DSL签出超时?,jenkins,jenkins-plugins,jenkins-job-dsl,Jenkins,Jenkins Plugins,Jenkins Job Dsl,可以使用以下命令指定克隆超时: git { ... cloneTimeout(60) } 其中60表示超时,60表示分钟。我了解到还可以指定签出超时,但我找不到详细信息。签出超时(…)和超时(…)都给出了一个错误 编辑 我可以通过Jenkins GUI设置签出超时(Configuration-->SCM-->Git-->其他行为-->高级签出行为-->超时)。我想在为Jenkins生成Docker配置的Groovy脚本中执行同样的操作: ... public class Doc

可以使用以下命令指定克隆超时:

git {
    ...
    cloneTimeout(60)
}
其中60表示超时,60表示分钟。我了解到还可以指定签出超时,但我找不到详细信息。
签出超时(…)
超时(…)
都给出了一个错误

编辑

我可以通过Jenkins GUI设置签出超时(
Configuration
-->
SCM
-->
Git
-->
其他行为
-->
高级签出行为
-->
超时
)。我想在为Jenkins生成Docker配置的Groovy脚本中执行同样的操作:

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

使用工作流插件做类似的事情怎么样

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

经过一些实验,我找到了如下所示的解决方案

重述

可以通过Jenkins GUI设置签出超时(
Configuration
-->
SCM
-->
Git
-->
其他行为
-->
高级签出行为
-->
超时
)。我想在为Jenkins生成Docker配置的Groovy脚本中也这样做。脚本已设置克隆超时

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

...
// "Checkout timeout"
checkoutTimeout(60)
...
不起作用。一般设置超时

...
// "Checkout timeout"
timeout(60)
...
也不管用。然后在网页上发表评论导致:

...
// "Checkout timeout"
extensions {
    checkoutOptions {
        timeout(60)
    }
}
...
这也不起作用。最后

解决方案

...
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
                }
            }
        }
        ...
    }
    ...
}
...
。。。
公共类DockerJob{
...
多厘米{
吉特{
遥远的{
url(…)
分支机构(…)
...
}
浅克隆()
氯硝胺(60)
//“签出超时”
配置{node->

node/'extensions'我不得不用管道这样更改它,因为checkout选项对我不起作用

扩展:[[$class:'CloneOption',超时:120]

完整签出代码

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

下面的签出配置在jenkins管道脚本中非常适合我。我们使用stash1就像github一样作为内部git服务器。用您自己的替换它

stage('Checkout') {
            steps {
                echo "Running checkout stage"
                checkout([$class: 'GitSCM', branches: [
                    [name: "*/${params.branch}"]
                ], doGenerateSubmoduleConfigurations: false, extensions: [
                    [$class: 'CleanCheckout'], [$class: 'CloneOption', timeout: 30, shallow: true]
                ], submoduleCfg: [], userRemoteConfigs: [
                    [credentialsId: 'ink_bot', url: "ssh://git@stash1.XYZ.com:7999/int_sparktp/${params.repo}.git"]
                ]])
            }
        }

您是否在询问如何通过Jenkins UI在作业配置中执行此操作?为简单起见,我想要一个类似于克隆超时的解决方案(用于签出超时)。