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



我已经使用存储库路径方法配置了我们的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本地部分。有什么想法吗?

对于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')
} 

相关内容

最新更新