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

标签 build travis-ci build-automation

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

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

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

script:
    - make target1
    - make target2
    - make target3

但是,这可能会隐藏一些问题,例如只有当 target1 已构建时 target2 的构建才会成功。

替代方案可以是:

script:
    - make target1
    - make clean
    - make target2
    - make clean
    - make target3

这看起来有点难看,而且可能会花费比需要更多的时间。在target1target2 成功构建之前,无法发现target3 构建中的错误。

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

matrix:
    - script: make target1
    - script: make target2
    - script: make target3

但这行不通。 C++ 的 Travis 文档建议矩阵可以交错不同的 environments and compilers ,而且我找不到任何方法来分别运行不同的脚本。这可以通过某种方式与环境一起指定吗?

这可能吗?如果是这样,执行此操作的正确方法是什么?

谢谢。

最佳答案

我找到了解决方案。 Travis 文档中提供了这方面的信息 here ,并给出了 Makefile 的特定信息 here .

对我有用的解决方案是:

env:
    matrix:
      - TARGET="target1"
      - TARGET="target2"
      - TARGET="target3"
script:
    - make $TARGET

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

关于build - 我如何在 Travis CI 中为 C++ 项目并行运行多个构建,每个构建都有一个单独的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543951/

相关文章:

post - 使用cmake完成后如何打印消息?

css - react-scripts 构建忽略条件 css 导入

python - 如何在 TravisCI 上添加 NLTK 'wordnet' ?

github - 如何将构建失败电子邮件限制为仅发送到 travis CI 中的特定分支?

MSBuild 不获取被引用项目的引用

build - 如何更改 Bazel 构建输出目录位置

java - IntelliJ - 找不到模块 : java. xml.ws.annotation

linux - 在 visual studio 中在哪里执行 bash 命令?

javascript - 在 Visual Studio 2010 中的另一个项目中引用 javascript 组件

java - Netbeans 的 Ant 自动化