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

我们希望利用Docker在CI构build中运行集成testing(使用Bazel )。 我们需要支持Debian以及MacOS。

为了保证构build的正确性,并确保确定性和可移植性,我们不能依赖具有正在运行的docker守护进程的主机。 构build需要自带docker守护进程。 达到这个目标的最好方法是什么? 有没有一个标准的“便携式”docker二进制文件? 如果不是的话,你认为怎样才能正确实施呢? 在Linux系统中,我想这将是相对简单的,因为我们只需要下载二进制文件并运行。 在MacOS中,我想我们需要将它与hyperkit捆绑在一起。

很想听听你的想法。

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

他们通过避免Dockerfile和Docker守护进程(大多数其他方法使用)来做到这一点,因为不清楚这些会产生确定性的工件。 这也避免了根本要求,这很好。

但是,您具体询问了有关testing ,我们还没有解决的问题。

@ittaiz也对此感兴趣,并开始讨论这个 Github问题。 你介意在那里讨论一下吗?