我有一个包含子模块的存储库。这些是在可公开访问的GitHub存储库中开发的。但是,我的最终部署是在一个断开连接的环境中,在GitLab中具有镜像的GitHub存储库,所有这些都需要身份验证。
我的.gitmodules
文件包含可公开使用的存储库的URL。我在工作中做了一些sed
替换,可以正确更新它们,但是不幸的是,我然后无法进行身份验证,因为它是与git url:....
步骤分开的操作。
我可以使用以下方法克隆项目:
git url: "[email protected]", branch: "master", credentialsId: "somecredentialid"
不幸的是,这不会更新我的子模块。而且由于我需要身份验证。
我也可以使用checkout
进行克隆:
checkout([
$class: 'GitSCM',
branches: [[name: 'master']],
doGenerateSubmoduleConfigurations: true,
extensions: [[$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: true,
recursiveSubmodules: true,
reference: '', trackingSubmodules: true]],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'somecredentialid',
url: '[email protected]']]
])
}
}
documentation不清楚doGenerateSubmoduleConfigurations: true,
和submoduleCfg:
是什么。
[我觉得checkout
方法可能是解决方案,但是我不知道如何更新.gitmodules
以反映子模块的安全URL。
在我的情况下,这对我有用,类似于您在此处所做的;看看是否有帮助。
checkout changelog: true, poll: true, scm: [
$class: 'GitSCM',
branches: [[name: "master"]],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'SubmoduleOption', recursiveSubmodules: true, parentCredentials: true], [$class: 'PruneStaleBranch']],
submoduleCfg: [],
userRemoteConfigs: [[name: 'origin', url: "Git ssh URL/${projectName}.git", credentialsId: 'Git credential']]
]