用于确定性 CI 构建的便携式 docker 守护程序
Portable docker daemon for deterministic CI builds
我们希望在 CI 构建(使用 Bazel)中使用 Docker 到 运行 集成测试。
我们需要支持 Debian 和 MacOS。
为了保证构建的正确性,并确保确定性和可移植性,我们不能依赖具有 运行ning docker 守护程序的主机。构建需要自带 docker 守护进程。
实现这一目标的最佳方法是什么?是否有标准的“便携式”docker 二进制文件?
如果不是,您认为实施此方法的正确方法是什么?
在 linux 系统中,我想这会相对简单,因为我们只需要下载二进制文件和 运行。
在 MacOS 中,我想我们需要将它与 hyperkit.
捆绑在一起
很想听听您对此的看法。
在构建 Docker 图像方面,您应该查看 bazelbuild/rules_docker
(免责声明:我 wrote/own 它们)。他们实现了我所知道的唯一正确的确定性 Docker builds(至少按照 Bazel 的标准)。
他们通过避免 Dockerfile 和 Docker 守护进程(大多数其他方法使用)来做到这一点,因为尚不清楚它们会产生确定性的工件。这也避免了 root 要求,这很好。
但是,您专门询问了测试,tl;dr 我们还没有解决。
@ittaiz is also interested in this and started thisGithub问题讨论一下。您介意将讨论转移到那里吗?
我们希望在 CI 构建(使用 Bazel)中使用 Docker 到 运行 集成测试。 我们需要支持 Debian 和 MacOS。
为了保证构建的正确性,并确保确定性和可移植性,我们不能依赖具有 运行ning docker 守护程序的主机。构建需要自带 docker 守护进程。 实现这一目标的最佳方法是什么?是否有标准的“便携式”docker 二进制文件? 如果不是,您认为实施此方法的正确方法是什么? 在 linux 系统中,我想这会相对简单,因为我们只需要下载二进制文件和 运行。 在 MacOS 中,我想我们需要将它与 hyperkit.
捆绑在一起很想听听您对此的看法。
在构建 Docker 图像方面,您应该查看 bazelbuild/rules_docker
(免责声明:我 wrote/own 它们)。他们实现了我所知道的唯一正确的确定性 Docker builds(至少按照 Bazel 的标准)。
他们通过避免 Dockerfile 和 Docker 守护进程(大多数其他方法使用)来做到这一点,因为尚不清楚它们会产生确定性的工件。这也避免了 root 要求,这很好。
但是,您专门询问了测试,tl;dr 我们还没有解决。
@ittaiz is also interested in this and started thisGithub问题讨论一下。您介意将讨论转移到那里吗?