无法在jenkins中克隆docker镜像中的子模块

时间:2018-04-24 02:02:34

标签: docker jenkins git-submodules

请耐心嵌套,但我无法在jenkins组织工作中克隆docker镜像中的子模块。非子模块构建成功。我在这个新的Jenkins实例中使用credentials plugin来存储我的密码和来自GitHub的用户名(我在其中启用了2因子)。

我的Jenkinsfile管道非常小:

node('master') {
  stage('Build') {
    docker.image('jenkins-base-image:latest').inside {
      sh """git submodule update --init path/to/submodule"""
    }
  }
}

子模块克隆在手动执行时工作正常,但在此作业中失败并出现以下错误:

+ git submodule update --init path/to/submodule
Cloning into '/var/lib/jenkins/workspace/55JPWTVF2QHKJYTPLJOHZLDO2T3KKXKJT5SKLQUNMNOJBXMQ2TQ/path/to/submodule'...
fatal: could not read Username for 'https://github.com': No such device or address
fatal: clone of 'something.git' into submodule path '/var/lib/jenkins/workspace/J55JPWTVF2QHKJYTPLJOHZLDO2T3KKXKJT5SKLQUNMNOJBXMQ2TQ/path/to/submodule' failed
Failed to clone 'path/to/submodule'. Retry scheduled

我尝试使用SSH等效的子模块删除并重新添加子模块,但问题仍然存在。

依赖关系:

  • Jenkins版本:2.107.2
  • Ubuntu版本:16.04LTS
  • Ubuntu docker版本:14.04LTS
  • 我尝试使用极少数插件,并且不确定如何跟踪这个默认组织作业使用的插件。

可能无关紧要,但全球Jenkins配置显示警告:

There is no credentials with admin access to manage hooks on GitHubRepositoryName[host=github.com,username=myco,repository=abcd]

再次通过工作克隆的顶级repo就好了。

1 个答案:

答案 0 :(得分:0)

检查要克隆的repo中的.gitmodules:如果该文件引用带有https URL的子模块,则需要凭据(如果这是私有仓库)

在这种情况下,它需要缓存的凭据 如" How to bake credential into docker image for git?"中所述,添加lib-secret 尝试SSH URL(在.gitmodules中声明)将有所帮助。
前提是您已将正确的公钥/私钥SSH密钥复制到图像中。