我们正在使用两个众所周知的概念来实施我们的持续集成和持续交付流程:Linux 二进制包和Docker
图像。
大部分工作已经完成:我们从GitLab
repo 中获取代码,编译它并放入deb
存储在中的包中Aptly
,然后我们Docker
为我们拥有的每个服务创建图像并将图像推送到私有Docker Registry
服务器。之后,这些图像被滚动到测试环境。最后,我们启动服务并执行验收测试。这是一个持续的过程,每次有人向origin/master
.
尚不清楚的是如何区分存储在 Docker Registry 中的稳定镜像?
我们必须跟踪每个图像的状态,因为我们需要执行稳定服务器的定期更新。显然,某些版本(即图像的版本)不会通过验收测试,并且必须在每次持续交付的下一次迭代中标记为不可用并被过滤掉。
似乎没有此功能的默认实现:
- 默认图像
repo/tag
是一个普通的字符串,不能同时包含版本号、构建日期和 QA 标记。 Labels
(在1.6中引入)可能是解决方法的一个很好的起点,但我们无法找到重新标记现有图像的机会(请注意,我们需要更新图像“元数据”,同时考虑到 QA 的结果)。没有可用的方法通过标签值查询图像,但我们可能可以包装 Docker API。
那么将版本分配给 Docker 映像的正确方法是什么?如何存储与 QA 相关的信息?我们如何“突出”稳定的图像构建?Jenkins CI
可以使用哪些功能来达到这些目的?请分享你的经验。
UPD:过了一会儿,我不得不在 Docker 问题跟踪器中开始讨论。可能有人会发现它也很有用。