docker - 使用 Azure 管道更新 JFrog Docker Registry 中的最新工件
问题描述
我正在将我的图像推送到带有标签的 JFrog artifactory Docker Registry:最新的 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
我可以以某种方式使其覆盖吗?我找不到任何有关此插件任务的文档。
解决方案
找不到此插件任务的任何文档。
恐怕这个插件对于 azure devops 不存在。
根据我的理解,应该覆盖以前的图像。您可以检查您的图像latest
在上述管道执行完成后是哪个标签。我认为图像的修改时间应该随着管道的运行而改变。
Layer already exists
这应该是因为您的 dockerfile 在那里没有更改。如您所知,Dockerfile 的每条指令都会生成一个层。如果指令没有改变,相应的层也不会改变。
另外,如果您担心图片不是您要推送的最新图片。您可以考虑在推送之前删除该标签。
查看此Frog 文档,并考虑使用命令行任务来执行此 api:
curl -k -u {username}:{password} -X DELETE https://{reverseproxyhost}/artifactory/<repo>/<imgname>/<imgtag>
推荐阅读
- ibm-cloud - ibm-cloud speech-to-text:是否可以为自定义词汇指定音素?
- python - 获取外键查询集 django
- java - 流收集分组输出自定义
- python - ModuleNotFoundError:没有名为“django_markdown2”的模块
- java - spring data mongodb调用save两次导致重复键异常
- c++ - 将字节转换为具有精确值的兆字节
- python - 如何让接口不连接?
- ios - 导航视图在 iPad 上的 SwiftUI 中无法正常工作
- ssh - sshd_config 不会被 Yocto 元层覆盖,因此无法连接到板
- javascript - 区分 iframe 重定向和刷新