docker - jenkinsfile docker.withRegistry 使用子域方法推送到artifactory

标签 docker jenkins jenkins-pipeline artifactory

我已经使用 repository path method 配置了我们的 Artifactory 实例。我正在尝试将 Jenkins 中构建的图像推送到 Artifactory,但它似乎忽略了存储库路径本身。

def dockerImage = _dockerImage("kl_alpha")
docker.withRegistry( "https://artifactory-dev.foobar.com/docker-local", "someCreds") {
  // def dockerImage =  docker.build("kl_alpha:$BUILD_NUMBER", "./")
  dockerImage.push()
  dockerImage.push("latest")
} 

             

Jenkins 中的输出看起来像这样

+ docker push artifactory-dev.foobar.com/kl_alpha:25
The push refers to repository [artifactory-dev.foobar.com/kl_alpha]

如您所见,它忽略了地址的 docker-local 部分。有什么想法吗?

最佳答案

对于 Docker 和 Jenkins Pipeline 的 Docker 插件,存储库是镜像参数的一部分,而不是注册表的一部分。一般来说,这看起来像:

docker.withRegistry('<registry url>') {}
  def dockerImage = docker.build('<repository>/<image name>:<tag>')
}

请注意,Jenkins Pipeline 的 Artifactory Docker 注册表文档有时会使用术语“存储库”,而实际上它的意思是“注册表”,这可能会造成混淆和误导。另请注意,某些图像没有参数的存储库部分,因为它们是官方的。

在您的情况下,代码将如下所示:

docker.withRegistry('https://artifactory-dev.foobar.com', 'someCreds') {
  def dockerImage = docker.build("docker-local/kl_alpha:${BUILD_NUMBER}", './')
  dockerImage.push()
  dockerImage.push('latest')
} 

关于docker - jenkinsfile docker.withRegistry 使用子域方法推送到artifactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71750950/

相关文章:

java - 在负载均衡器后面集群 Docker 容器以实现 HA

docker - CloudFoundry与Docker/CoreOS兼容吗?

python - 在产品存储库或外部存储库中构建/部署脚本?

jenkins - 读取 secret 文本文件的输出

Jenkins Git 分支无法使用环境变量

docker - 停留在 'sh' 阶段,然后 Process 显然从未在/home/jenkins/jenkins/workspace/中启动

Jenkins 共享库 src 类 - 无法解析类

kubernetes - NGINX 入口 auth-url 返回 404 但端点存在

docker - 如何在 Giant Swarm 上部署 crate 集群?

jenkins 管道从 scm 获取管道脚本下的存储库 url 变量