7

我们正在使用两个众所周知的概念来实施我们的持续集成和持续交付流程:Linux 二进制包和Docker图像。

大部分工作已经完成:我们从GitLabrepo 中获取代码,编译它并放入deb存储在中的包中Aptly,然后我们Docker为我们拥有的每个服务创建图像并将图像推送到私有Docker Registry服务器。之后,这些图像被滚动到测试环境。最后,我们启动服务并执行验收测试。这是一个持续的过程,每次有人向origin/master.

在此处输入图像描述

尚不清楚的是如何区分存储在 Docker Registry 中的稳定镜像?

我们必须跟踪每个图像的状态,因为我们需要执行稳定服务器的定期更新。显然,某些版本(即图像的版本)不会通过验收测试,并且必须在每次持续交付的下一次迭代中标记为不可用并被过滤掉。

似乎没有此功能的默认实现:

  1. 默认图像repo/tag是一个普通的字符串,不能同时包含版本号、构建日期和 QA 标记。
  2. Labels(在1.6中引入)可能是解决方法的一个很好的起点,但我们无法找到重新标记现有图像的机会(请注意,我们需要更新图像“元数据”,同时考虑到 QA 的结果)。没有可用的方法通过标签值查询图像,但我们可能可以包装 Docker API。

那么将版本分配给 Docker 映像的正确方法是什么?如何存储与 QA 相关的信息?我们如何“突出”稳定的图像构建?Jenkins CI可以使用哪些功能来达到这些目的?请分享你的经验。

UPD:过了一会儿,我不得不在 Docker 问题跟踪器中开始讨论。可能有人会发现它也很有用。

4

1 回答 1

2

看起来您的问题已在该讨论链接中得到解答,但我只想指出,在 Bleacher Report 中,我们从未将图像推送到未首先通过 CI 的 docker hub(私有或托管)。

  • 推送的代码
  • CircleCI 创建一个标记的构建
  • 测试在标记容器内运行
  • 如果测试通过 CircleCI 将标记的容器推送到集线器

详细解释

于 2015-07-23T22:04:06.513 回答