如何在Jenkins Git插件中指定Job DSL检出超时?

vyu0f0g1  于 2023-05-06  发布在  Jenkins
关注(0)|答案(5)|浏览(197)

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

git {
    ...
    cloneTimeout(60)
}

其中60是超时,是分钟。我读到还可以指定 checkout 超时,但我找不到详细信息。checkoutTimeout(...)timeout(...)都给予错误。

编辑

我可以通过Jenkins GUI设置结帐超时(Configuration--〉SCM--〉Git--〉Additional Behaviors--〉Advanced Checkout Behaviors--〉Timeout)。我想在为Jenkins生成Docker配置的Groovy脚本中做同样的事情:

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

nom7f22z1#

我不得不像这样用管道更改它,因为 CheckoutOption 对我不起作用

完整结账代码

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

hi3rlvi22#

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

RECAP

可以通过Jenkins GUI设置校验超时(Configuration--〉SCM--〉Git--〉Additional Behaviors--〉Advanced Checkout Behaviors--〉Timeout)。我想在为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
                }
            }
        }
        ...
    }
    ...
}
...
lymnna71

lymnna713#

如何使用工作流插件,并做这样的事情?

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

nkoocmlb4#

在jenkins pipeline脚本中,以下checkout config对我来说非常好用。我们使用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"]
                ]])
            }
        }
ybzsozfc

ybzsozfc5#

添加此扩展对我有用。

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

相关问题