我有一个包含子模块的存储库。这些是在可公开访问的GitHub存储库中开发的。然而,我的最终部署是在GitLab中使用镜像GitHub存储库的断开连接的环境中进行的,这些都需要进行身份验证。
我的.gitmodules
文件包含公开可用的回购的网址。我在工作中做了一些sed
替换并且可以正确更新它们,但不幸的是,我无法进行身份验证,因为它是git url:....
步骤的单独操作。
我可以用以下方法克隆项目:
git url: "git@my.gitlab.secure", 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: 'git@my.gitlab.secure']]
])
}
}
我不清楚documentation doGenerateSubmoduleConfigurations: true,
和submoduleCfg:
是什么。
我觉得checkout
方式可能是解决方案,但我无法弄清楚如何更新.gitmodules
以反映子模块的安全网址。
答案 0 :(得分:1)
在我的情况下,这对我有用,类似于您在此处尝试执行的操作;看看是否有帮助。
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']]
]
答案 1 :(得分:1)
我也对此感到震惊,这就是我的发现。
doGenerateSubmoduleConfigurations
显示为scm.doGenerateSubmoduleConfigurations
,表明它调用了SubmoduleCombinator
。那根本不像您想要的。该选项可能应该是(a)在扩展程序中而不是核心插件,并且(b)称为doGenerateSubmoduleCombinationMatrix
之类的东西。
submoduleCfg
在git插件中似乎没有得到太多明显的使用。我所发现的只是测试它为空。
功能似乎已经转移到SubmoduleOption
中。该方法具有调用onCheckoutCompleted(...)
的方法git.submoduleUpdate(...)
。
因此AFAICS想要的是extensions
类的SubmoduleOption
条目。而且文档有些特殊。