C++ Travis中的单个制造和并行测试

C++ Travis中的单个制造和并行测试,c++,makefile,travis-ci,C++,Makefile,Travis Ci,我需要运行一次: autoreconf -i mkdir build && cd build ../configure make 然后在不同的文件夹中运行测试: make check -C path1 make check -C path2 测试可与矩阵特征并行: language: - cpp compiler: - clang env: - TEST_PATH=path1 - TEST_PATH=path2 install: - a

我需要运行一次:

autoreconf -i
mkdir build && cd build
../configure
make
然后在不同的文件夹中运行测试:

make check -C path1
make check -C path2
测试可与矩阵特征并行:

language:
    - cpp
compiler:
    - clang
env:
    - TEST_PATH=path1
    - TEST_PATH=path2
install:
    - autoreconf --install
    - mkdir build && cd build
    - ../configure
    - make
script:
    - make check -C $TEST_PATH
问题是:安装步骤运行两次,例如:

  • 安装+测试路径1
  • 安装+测试路径2
有没有一种方法可以实现以下目标:

  • 安装(运行一次)
  • 使用测试运行2个作业(Travis配置的脚本部分):

    • 测试路径1
    • 测试路径2

假设您将测试并行化,这不意味着它们可以在不同的主机上运行吗?假设它们运行在不同的主机上,不需要在每个主机上进行安装吗?当然,假设它们运行在不同的主机上。Travis文档说,运行超过50分钟的作业将被杀死。状态页面显示花费的总时间,例如:dT_test1+dT_test2。Travis超时作业是基于总时间还是基于单个测试dT_i?您是否指出即使对于同一主机,安装也会运行两次?我假设每个作业都在它自己的某种环境中运行,因此就测试作业而言,它们很可能是不同的主机。(我要指出的是,我对travis实际上是如何工作的一无所知,我这里只讲一般原则。)这里的计时作业到底在哪里发挥作用?这是主要问题:如果测试在同一台主机上独立运行(并行进程),那么我看不出有理由运行安装步骤两次。但是,如果(如您所说)它们运行在不同的主机或不同的虚拟机上,等等,那么安装步骤显然需要运行两次。时间安排对于加快测试非常重要。例如,给定一个有N个核心的节点,我可以运行
make-jn-cpath1
,这将大大加快测试构建的速度。此外,我可以并行测试path1和path2,但它需要使用两个单独的进程而不是环境来完成。不,你的假设是错误的。向CI系统传授在同一主机上运行(并行)的两个作业可以共享同一安装所需的工作比简单地处理同一主机上的两个并行作业与处理不同主机上并行运行的两个作业所需的工作要多。每个作业都需要像独立运行一样运行才能正常运行。建立短路支持是额外的(可能脆弱的)工作,否则是不必要的。但既然我只是在猜测,我现在就闭嘴。