Подтвердить что ты не робот

Monorepo, Travis и Matrix: Как создать конкретный путь только тогда, когда он изменится?

У меня есть один репозиторий с несколькими (java/gradle) проектами:

project-a/
project-b/
project-c/

Я хотел бы создать конфигурацию матричной сборки, с одной сборкой на проект. И я хочу построить этот проект, только если в него были внесены изменения.

Это возможно?

Я легко могу создать скрипт, который проверяет, была ли затронута папка с помощью $TRAVIS_COMMIT_RANGE. Но как бы я использовал это в .travis.yml?

РЕДАКТИРОВАТЬ

В Travis есть проблема с добавлением поддержки путей включения/исключения для того, когда следует запускать сборки. С поддержкой матрицы это решило бы мою проблему.

4b9b3361

Ответ 1

По сути, вы спрашиваете об условной сборке в той или иной форме. К сожалению, документация об условных сборках гласит, что

Задания, созданные с помощью расширения матрицы, в настоящее время не могут иметь условий.

... и даже если он это поддерживает, я не вижу простого способа проверить путь коммита в списке поддерживаемых условий.

Тем не менее, можно добиться этого процесса с помощью их API. Вы можете создать конфигурацию сборки, цель которой - просто запустить ваш скрипт и проверить, какой подпроект должен быть собран сейчас. Этот сценарий мета-сборки может запускать сборку travis через API. На этой странице документа вы можете найти пример того, как запустить конкретную работу из вашей матрицы.