如何在Travis CI中为C ++项目运行多个构建,每个构建带有单独的脚本?

时间:2018-09-27 19:32:44

标签: build travis-ci build-automation

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

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

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

script:
    - make target1
    - make target2
    - make target3

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

然后可以选择:

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

这看起来有点丑陋,而且可能会花费比所需更多的时间。成功构建target3target1之前,找不到target2的构建错误。

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

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。有关此信息,请参见Travis文档here,以及特定于Makefile的信息,here

最适合我的解决方案是:

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

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