如何在 Travis CI 中并行运行多个构建,每个构建都有一个单独的脚本,用于 C++ 项目?

Goo*_*eds 3 build-automation build travis-ci

我有一个 C++ 项目,我想使用 Travis CI 为其自动化构建。

该项目使用 GNU make 构建。有多个构建目标,它们彼此独立,我想使用 Travis CI 自动检查每个目标的构建成功。因此,我希望为每个提交运行多个 Travis 构建,每个目标一个。

我可以这样做的一种方法是:

script:
    - make target1
    - make target2
    - make target3
Run Code Online (Sandbox Code Playgroud)

但是,这可能会隐藏一些问题,例如target2仅在target1已经构建的情况下构建成功。

一个替代方案可能是:

script:
    - make target1
    - make clean
    - make target2
    - make clean
    - make target3
Run Code Online (Sandbox Code Playgroud)

这看起来有点难看,而且可能需要比需要更多的时间。在构建错误target3无法找到,直到target1target2成功建成。

更好的方法可能是使用 Travis 的构建矩阵功能,这是我一直无法做到的。我尝试了以下方法:

matrix:
    - script: make target1
    - script: make target2
    - script: make target3
Run Code Online (Sandbox Code Playgroud)

但这不起作用。C++ 的 Travis 文档表明矩阵可以交错不同的环境和编译器,我无法找到单独运行不同脚本的任何方法。这可以以某种方式与环境一起指定吗?

这可能吗?如果是这样,这样做的正确方法是什么?

谢谢你。

Goo*_*eds 5

我找到了解决办法。在这个信息中的特拉维斯文档中给出这里,和特定信息的Makefile中给出这里

对我有用的解决方案是:

env:
    matrix:
      - TARGET="target1"
      - TARGET="target2"
      - TARGET="target3"
script:
    - make $TARGET
Run Code Online (Sandbox Code Playgroud)

这将创建三个并行运行的作业。