我们想将docker存储库推送到DockerHub - 从shell开始工作。但在Jenkins中,我们收到错误消息"errorDetail":{"message":"unauthorized: access to the requested resource is not authorized"
我认为问题是在shell(docker login)中我必须插入电子邮件地址,登录名和密码。在Jenkins我只能设置登录名和密码NO email。 凭证插件的版本是1.24,我们使用docker-build-step作为docker步骤。
THX
答案 0 :(得分:1)
您可以试试CloudBees Docker Build and Publish plugin吗?
此插件允许创建构建步骤以构建Dockerfile并将图像发布到注册表(DockerHub或私有注册表):
另一种解决方案是使用jenkins用户+使用相关凭据登录DockerHub,在Jenkins机器上打开会话?
使用此解决方案,DockerHub凭据将被缓存,Jenkins应该能够将您的图像推送到DockerHub注册表。
答案 1 :(得分:1)
也许您可以使用Docker pipeline plugin(它在推荐的插件中)。
Jenkinsfile示例:
node {
checkout scm
def dockerImage
stage('Build image') {
dockerImage = docker.build("username/repository:tag")
}
stage('Push image') {
dockerImage.push()
}
}
以这种方式进行操作,您必须在管道模型定义中指定Docker注册表的凭据。
Docker管道插件在将“管道模型定义”中分配的凭据应用于具有多分支管道的项目时遇到问题。也就是说,如果使用上面的代码,您将继续收到错误:
拒绝:请求的对资源的访问被拒绝
然后,您必须在Jenkins文件中指定凭据,如下所示:
node {
checkout scm
def dockerImage
stage('Build image') {
dockerImage = docker.build("username/repository:tag")
}
stage('Push image') {
docker.withRegistry('https://registry-1.docker.io/v2/', 'docker-hub-credentials') {
dockerImage.push()
}
}
}
如果需要,可以修改自定义注册表的URL