gpt4 book ai didi

jenkins - 我可以在 Jenkinsfile 中增强 scm 吗?

转载 作者:行者123 更新时间:2023-12-02 16:09:23 26 4
gpt4 key购买 nike

我花了很长时间才理解 Jenkinsfile 中 checkout scm 的真正含义(checkout 是一个函数,scm 是一个默认的全局变量)。

既然我已经理解了它,我想增强scm,例如增加特定结帐的超时或设置sparseCheckoutPaths。这可能吗?如果是这样,怎么办?

最佳答案

对于 Git,checkout scm 基本上相当于:

checkout([
$class: 'GitSCM',
branches: scm.branches,
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
extensions: scm.extensions,
userRemoteConfigs: scm.userRemoteConfigs
])

如果您想向现有的 scm 添加稀疏结账,您需要做的事情如下:

checkout([
$class: 'GitSCM',
branches: scm.branches,
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
extensions: scm.extensions + [$class: 'SparseCheckoutPaths', sparseCheckoutPaths:[[$class:'SparseCheckoutPath', path:'path/to/file.xml']]],
userRemoteConfigs: scm.userRemoteConfigs
])

更好的是,您可以在共享库中定义自定义步骤sparseCheckout

def call(scm, files) {
if (scm.class.simpleName == 'GitSCM') {
def filesAsPaths = files.collect {
[path: it]
}

return checkout([$class : 'GitSCM',
branches : scm.branches,
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
extensions : scm.extensions +
[[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: filesAsPaths]],
submoduleCfg : scm.submoduleCfg,
userRemoteConfigs : scm.userRemoteConfigs
])
} else {
// fallback to checkout everything by default
return checkout(scm)
}
}

然后你可以这样调用它:

sparseCheckout(scm, ['path/to/file.xml'])

关于jenkins - 我可以在 Jenkinsfile 中增强 scm 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46004884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com