用于确定性CI构建的便携式docker守护程序

时间:2017-12-03 13:58:33

标签: docker bazel

我们希望利用Docker在CI版本中运行集成测试(使用Bazel)。 我们需要支持Debian以及MacOS。

为了保证构建的正确性,并确保确定性和可移植性,我们不能依赖具有正在运行的docker守护程序的主机。构建需要有自己的docker守护进程。 实现这一目标的最佳方法是什么?有标准的“便携式”docker二进制文件吗? 如果没有,您认为实施此方法的正确方法是什么? 在linux系统中,我想这会相对简单,因为我们只需要下载二进制文件并运行。 在MacOS中,我想我们需要将其与hyperkit捆绑在一起。

很想听听你对此的看法。

1 个答案:

答案 0 :(得分:2)

在构建Docker镜像方面,你应该看看bazelbuild/rules_docker(免责声明:我写了/拥有它们)。他们实现了我所知道的唯一正确的确定性Docker 版本(至少符合Bazel的标准)。

他们通过避免使用Dockerfile和Docker守护程序(大多数其他方法都使用)来做到这一点,因为目前还不清楚它们是否会产生确定性的伪像。这也避免了root要求,这很好。

但是,您特别询问了测试,其中tl; dr我们还没有解决。

@ittaiz也对此感兴趣并开始this Github问题进行讨论。你介意在那里讨论吗?