首页 > 解决方案 > 如何启用 cloudbees-jenkins-distribution docker push 以推送到受密码保护的私有注册表?

问题描述

使用此设置一切正常,直到我启用htpasswd.

据我所知,一切都已正确配置,因此如果确实如此;那么这是一个错误吗?我注意到在管道控制台输出中它指的是withDockerRegistry我实际使用withRegistry的 .

配置

需要明确的是,此设置作为 jenkins 可以推送的不安全私有注册表工作。过去没有 SSL 设置。唯一的区别是启用htpasswd

注册表配置

詹金斯配置

应用配置

在我的本地机器上我可以做

我的 Jenkinsfile 看起来像这样

pipeline {
  agent any
  stages {
    stage('Deploy Image') {
      steps{
        script {
          docker.withRegistry('http://registry.exp', 'registry-login'){
            docker.build('example-app').push('latest')
          }
        }
      }
    }
  }
}
从詹金斯运行

Console Output在拉取 github 存储库并构建 docker 映像后,在 jenkins 中。


...

[Pipeline] withDockerRegistry
Wrote authentication to /var/jenkins_home/.dockercfg
[Pipeline] {

[Pipeline] sh
+ docker build -t portfolio-app .

Sending build context to Docker daemon     41MB
...

Successfully built 5cd890711511
Successfully tagged example-app:latest
[Pipeline] dockerFingerprintFrom

[Pipeline] sh
+ docker tag example-app registry.exp/example-app:latest

[Pipeline] sh
+ docker push registry.exp/example-app:latest
The push refers to repository [registry.exp/example-app]

4dbf42572f81: Preparing
83fc1127b6ec: Preparing
31c9a8db3bb1: Preparing
487b885434b5: Preparing
d2968d4fb613: Preparing
8170f2d5c43d: Preparing
a464c54f93a9: Preparing
8170f2d5c43d: Waiting
a464c54f93a9: Waiting
no basic auth credentials

标签: dockerjenkinsregistryjenkins-pipeline

解决方案


推荐阅读