请耐心嵌套,但我无法在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配置显示警告:
There is no credentials with admin access to manage hooks on GitHubRepositoryName[host=github.com,username=myco,repository=abcd]
再次通过工作克隆的顶级repo就好了。
答案 0 :(得分:0)
检查要克隆的repo中的.gitmodules:如果该文件引用带有https URL的子模块,则需要凭据(如果这是私有仓库)
在这种情况下,它需要缓存的凭据
如" How to bake credential into docker image for git?"中所述,添加lib-secret 或尝试SSH URL(在.gitmodules中声明)将有所帮助。
前提是您已将正确的公钥/私钥SSH密钥复制到图像中。