我使用Travis CI从Dockerfiles构建Docker镜像,然后在成功时将它们推送到Docker Hub。如何自动更新Docker Hub的完整描述?
我创建了一个MD文件来描述图像以及如何使用它。我想在完整说明部分的Docker Hub上有相同的描述。
因为我可能会在将来更新描述,所以我想让Travis CI根据存储库中的MD文件使用新映像自动更新描述。
任何人都知道如何做到这一点?
我使用Travis CI从Dockerfiles构建Docker镜像,然后在成功时将它们推送到Docker Hub。如何自动更新Docker Hub的完整描述?
我创建了一个MD文件来描述图像以及如何使用它。我想在完整说明部分的Docker Hub上有相同的描述。
因为我可能会在将来更新描述,所以我想让Travis CI根据存储库中的MD文件使用新映像自动更新描述。
任何人都知道如何做到这一点?
由于Docker Hub does not expose any API,将内容远程发送到Docker Hub的唯一方法是使用docker push
命令,这限制了用于发送图像。另一方面,如果您让Docker Hub服务从Github或Bitbucket存储库为您创建映像,那么Docker Hub将通过在该存储库上找到README.md
文件的内容来更新详细描述。请参阅Docker Hub的自动构建文档中的Understand the build process部分。
这意味着你托管Dockerfile和README.md在Github或到位桶文件。
如果你真的需要首先建立自己的TravisCI(也许是因为你还运行内置图像自动测试)的图像,那么你可以有TravisCI触发泊坞枢纽网络挂接告诉泊坞枢纽建一旦TravisCI确定它正在通过测试,图像。
要做到这一点,在泊坞枢纽,配置你的形象,你会为自动构建(因此一个Github上或到位桶项目联系起来),但取消了自动功能:
然后向下滚动构建设置页面到构建触发器部分并复制触发器URL:
现在编辑您的.travis。阳明文件,并添加以下块(介意<your account>
和<your image>
占位符):
after_success:
# notify Docker Hub to make a new build
- >
[ "$TRAVIS_BRANCH" == "master" ]
&& curl -X POST -H "Content-Type: application/json"
--data '{"docker_tag_name": "latest"}'
https://registry.hub.docker.com/u/<your account>/<your image>/trigger/$DOCKER_HUB_TOKEN/
然后转到您的项目页面的特拉维斯CI网站上,并打开项目设置:
然后将DOCKER_HUB_TOKEN
环境变量添加到您的Travis CI项目中,并在Docker Hub Build Settings页面上找到触发器标记值:
您仍然需要关联到你的码头工人枢纽工程一Github上或到位桶库,但特拉维斯CI会指示多克尔集线器时,建立你的形象之一。
是的,我知道Automated Builds,但我想用Travis CI,这样我也可以做一堆测试。有没有其他方法,或者我应该只是编写一个充当浏览器的脚本并更改Docker Hub页面上的描述? – NEO
@NEO可以这样做,设置更复杂,但我会尽力解释清楚→回答编辑 – Thomasleveil
这实际上是一个好主意。但是如果我想触发多个构建,我应该怎么做?现在,我正在使用Travis CI的构建矩阵功能通过更改一些env变量来构建多个图像。是否可以触发矩阵每行的构建? – NEO