Github-Action-Day3:跨平台构建(Cross-Plaform Builds)

这是我的 Github Action Advent Calendar 的第三天的内容,如果您想要了解更多已经发布的 tips 信息,查看此处的 索引

Github Action 优点之一就是它不仅仅支持在 Linux 主机或者容器上运行构建 (builds)。

Github 向我们提供了 Linux 虚拟机 — 当然,同样提供了运行 Windows 以及 macOS 系统的虚拟机。

macOS 虚拟机环境尤其重要,因为即使作为一个开发者,除非使用 Apple 的硬件设备,否则您依然无法在虚拟机上运行macOS。所以,如果您想要构建跨平台应用,macOS 的这个要求可能会限制您在本地构建以及测试您的个人应用的方式。

若要指定主机类型(虚拟机类型),您必须在一个 job 中显示地声明 runs-on 参数。例如,runs-on: macos-latest 表明这个任务在 macOS 上运行,而runs-on: windows-latest 则毫无意外表明这个任务运行在 Windows 上。因此,如果您想要通过在Linux, macOS 以及 Windows上 运行 make 命令来构建一个应用,您应该指定每个平台都为一个单独的 job这里是例子

Translate Note:

由于原作者这里的 make 命令和他个人的项目有关,我们使用会有错误,我就把 make 命令统一换成系统中打印系统信息的命令。

Linux、macOS: uname -a

Windows: systeminfo

但是这样(代码)就有点重复了…. 而如果您阅读过 Github Action Day2: 矩阵工作流 ,您应该记得我曾经说过矩阵扩展只是简单的变量替换。好了(不卖关子了),是的,它们其实可以用在 runs-on 参数中。

这意味着您可以通过设置一个 matrix 来建立一个跨平台的构建,,这样仅仅只需要一小行 工作流定义(代码) 即可

Translate Note:

为了和上面匹配,这里的一些代码也进行了调整,望理解

因此,您有一种选择:您可以明确每个独立的 job 运行在您想运行的虚拟机环境上,或者如果您有相同的运行步骤 (重复代码),您可以使用矩阵变量。