Как я могу запустить несколько сборок, каждая с отдельным скриптом, в Travis CI для проекта C ++? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть проект на 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

Это выглядит немного уродливо, итакже может занять больше времени, чем необходимо.Ошибки в сборке target3 не могут быть найдены до тех пор, пока не будут успешно построены target1 и target2.

Лучшим способом может быть использование функции построения матрицы в Travis, чего я не смогсделать.Я попробовал следующее:

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

Но это не работает.Документация Travis для C ++ предполагает, что матрица может чередовать различные среды и компиляторы , и я не могу найти какой-либо способ отдельно запускать разные сценарии.Можно ли это как-то указать с помощью среды?

Возможно ли это?Если да, то как правильно это сделать?

Спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

Я нашел решение.Информация об этом приведена в Документах Трэвиса здесь , а информация, относящаяся к Makefiles, дана здесь .

Решение, которое сработало для меня:

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

Это создает три задания, которые выполняются параллельно.

...