我想更新git克隆上的子模块。
有什么方法可以用Jenkins管道Git命令来完成吗?
目前我正在做这个..。
git branch: 'master',
credentialsId: 'bitbucket',
url: 'ssh://bitbucket.org/hello.git'
但是,一旦克隆了子模块,它就不会更新
发布于 2017-02-17 05:39:07
使用当前的Git插件,您甚至不需要这样做。
Git插件支持带有子模块的存储库,而子模块本身又有子模块。 不过,这一点必须打开: 在作业配置->区段源代码管理中,Git ->高级按钮(在分支下构建) ->递归更新子模块
但OP使用的是管道。
因此,简单的第一步构建就足够了:
git submodule update --init --recursive
然而,“任择议定书”补充说:
是的,但是如果我使用的是
sh 'git submodule update --init --recursive'
,这将使用$HOME/id_rsa
,对吗?如果可能的话,我想传递这个命令的私钥。
这意味着您可以设置GIT_SSH_COMMAND
(使用Git 2.10+)。
这样你就可以引用您自己的私钥了。
pipeline {
agent any
environment {
GIT_SSH_COMMAND = 'ssh -i /path/to/my/private/key'
}
stages {
stage('Build') {
steps {
sh 'printenv'
sh 'git submodule update --init --recursive'
}
}
}
}
如果任何克隆涉及ssh url,该ssh克隆将使用正确的私钥。
不幸的是,这不起作用:
JENKINS-38860
上面报告的错误: 致命:命令"git get submodule.MySubModule.url“返回状态代码1 每当您有嵌套子模块时,都会为我发生。 考虑一个场景,其中repoA
包含子模块B
,其中包含子模块C
。 如果没有启用带有"Recursively update submodules
“的”Recursively update submodules
“,Jenkins将克隆A
、结帐/克隆B
,并且无法初始化/克隆C
。 这可能是预期的行为。 如果启用"Recursively update submodules
",则会得到以下错误: 致命:命令"git get submodule.C.url“返回状态代码1
发布于 2017-02-17 09:03:43
git命令作为管道步骤是相当有限的,因为它提供了更复杂的签出命令的默认实现。对于更高级的配置,应该使用签出命令,为此可以传递大量参数,包括所需的子模块配置。
您想要使用的可能是这样的东西:
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: false,
recursiveSubmodules: true,
reference: '',
trackingSubmodules: false]],
submoduleCfg: [],
userRemoteConfigs: [[url: 'your-git-server/your-git-repository']]])
从文档来看,编写这类行通常很麻烦,我建议您使用Jenkins非常好的Snippet Generator
(YourJenkins > yourProject > PipelineSyntax)来自动生成结帐行!
发布于 2017-07-21 18:08:30
checkout([
$class: 'GitSCM',
branches: scm.branches,
doGenerateSubmoduleConfigurations: false,
extensions: [[
$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: true,
recursiveSubmodules: true,
reference: '',
trackingSubmodules: false
]],
submoduleCfg: [],
userRemoteConfigs: scm.userRemoteConfigs
])
https://stackoverflow.com/questions/42290133
复制相似问题