docker 如何在 Github CI/CD 中提供帮助?

问题描述 投票:0回答:1

我是 Docker 新手。最近在学习docker的一些基础知识。 我正在开发一个 C++ 项目,该项目应该在 Windows、Linux 和 MacOS 上运行。每个操作系统都支持两个架构:x64 和 arm64。由于该存储库是私有存储库,因此我必须为 CI/CD 设置自己的自托管运行器。

我已经设置了一个 docker 映像(ubuntu x64),它可以帮助我在真正的 x64 Linux 机器上构建源代码。

理想情况下,我想通过另外 5 个不同的 docker 镜像在同一台 Linux 机器上运行 x64 Windows、arm64 Windows、x64 Mac、arm64 Mac 和 arm64 windows。 但在网上查了一些基础知识后,看起来这并不是很现实。不过,我不确定。

我有兴趣在 CI/CD 设置中使用 docker 有两个目的

  • 每次我需要将物理机换成 CI/CD 时,我不需要安装一堆编译源代码所需的工具链。
  • 在最坏的情况下,我将不得不运行 6 台机器 24 7 才能保持服务运行。当然,实际上,我想我可以使用 Arm Mac 通过 Rosetta 2 在 arm64 和 x64 上编译代码。同样的情况也适用于 Windows。这意味着如果没有 docker 的帮助,我将需要 4 台机器。如果我可以只使用一台 Linux PC 来构建随处可见的源代码,那就太好了。

为了澄清,当我说构建代码时,我实际上需要在 CI/CD 中运行单元测试,以确保问题的行为保持预期。

如果有人能提供一些建议,我将不胜感激。 我想我什至不确定 Docker 是否应该首先解决这些问题。

我做了一些到目前为止有效的尝试

  • 构建一个 docker 镜像(ubuntu x64),在arm64 mac、x64 linux、x64 windows 上运行它。这一切都构建了我的代码并正常运行单元测试。
  • 构建一个 docker 镜像(ubuntu arm4),在arm64 mac、x64 linux、x64 windows 上运行它。这一切都构建了我的代码并正常运行单元测试。
  • 我还配置了 CI/CD 工作流程,帮助通过我的 docker 映像成功在 x64 ubuntu 上构建代码。
  • 看起来我确实可以构建一个迄今为止仅在真正的 Windows 机器上运行的 docker 映像(Windows)。在这种情况下我只尝试过x64,不确定arm64。

似乎不起作用的是

  • Github Action 似乎只支持 Linux 构建器上的 docker 镜像。
  • 不知何故,如果 ubuntu 映像基于 arm64,即使相同的 x64 映像工作正常,github 操作也无法工作。
  • Windows 映像似乎根本无法在 Mac 或 Linux 机器上运行。

谢谢

c++ docker github-actions private-repository
1个回答
0
投票

如果您使用自托管运行器,您所需要做的就是添加 arch 仿真 (qemu)。尝试运行具有不同拱门的

helloworld
docker。实际上,可以在 Linux 映像上构建 Windows 应用程序。您只需要设置一个环境并构建交叉编译器(或设置一个多架构编译器,但对于 ci-cd 我强烈建议构建您自己的交叉编译器实例)。

© www.soinside.com 2019 - 2024. All rights reserved.