git - Jenkins 管道子模块身份验证

标签 git jenkins

我有一个包含子模块的存储库。这些是在可公开访问的 GitHub 存储库中开发的。然而,我的最终部署是在一个断开连接的环境中,GitLab 中有镜像的 GitHub 存储库,所有这些都需要身份验证。

我的 .gitmodules文件包含公开可用存储库的 URL。我做了一些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以反射(reflect)子模块的安全 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']]
]

关于git - Jenkins 管道子模块身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44978903/

相关文章:

git - Eclipse Git 插件 : cannot Configure Push To Upstream

java - 如何在通过 HTTP GET 获取文件后直接通过 HTTP PUT 发布文件?

jenkins - 如何设置 SBT 构建以在 Jenkins 测试失败时返回零退出代码?

groovy - 如何对groovy中的变量取反

java - gpg : signing failed: secret key not available

jenkins - 如何将用户输入密码与凭据密码进行比较

c# - Git pull 请求中显示的未更改文件

eclipse - 在 Eclipse 中将文件或文件夹添加到 Git 存储库

git - 为什么我需要一直执行 `--set-upstream`?

git - 如何撤消历史提交中的文件删除?