我正在将我的镜像推送到 JFrog Artifactory Docker 注册表,标签为:最新的 Azure 任务
- task: ArtifactoryDocker@1
displayName: 'Publish a docker image'
inputs:
command: 'push'
artifactoryService: 'Artifactory'
targetRepo: 'docker'
imageName: '$(imageName):latest'
但是它不会重写现有的最新版本,并且在管道中我会看到下一个日志
394668d88274: Layer already exists
d821d3ad1366: Layer already exists
78d869964af5: Layer already exists
26f565299233: Layer already exists
c952f96d3d90: Layer already exists
29a09581f308: Layer already exists
30ffbe29feab: Layer already exists
af63a7c31ba7: Layer already exists
6153c9b0b282: Layer already exists
25c2968702ec: Layer already exists
610209d4392e: Layer already exists
7cd35e62d6fb: Layer already exists
2de391e51d73: Layer already exists
92d30847d049: Layer already exists
d73dd9e65295: Layer already exists
686245e78935: Layer already exists
d7ff1dc646ba: Layer already exists
644879075e24: Layer already exists
latest: digest: sha256:586235b20caabc398b8da81d79a48e27385456d4a4bc2a343f7cacdd8ce97b38 size: 4078
我可以以某种方式将其覆盖吗?我找不到任何有关此插件任务的文档。
最佳答案
Cannot find any documantation for this task of plugin.
恐怕 Azure DevOps 不存在此插件。
根据我的理解,之前的图像应该被覆盖。在上述管道执行完成后,您可以检查您的图像哪个标签是最新
。我认为图像的修改时间应该随着管道的运行而改变。
Layer already exists
这应该是因为您的 dockerfile 那里没有更改。大家知道,Dockerfile的每条指令都会生成一个层。如果指令没有改变,相应的图层也不会改变。
此外,如果您担心该镜像不是您要推送的最新镜像。您可以考虑在推送之前删除该标签。
检查这个JFrog document ,并考虑使用命令行任务来执行此api:
curl -k -u {username}:{password} -X DELETE https://{reverseproxyhost}/artifactory/<repo>/<imgname>/<imgtag>
关于docker - 使用 Azure 管道更新 JFrog Docker 注册表中的最新 Artifactory ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60864943/