Почему в Тревисе нет (и, возможно, не может быть) кнопки «Стартовать билд»


Артём Сапегин пожаловался в Твиттере, что совершенно не понимает, почему в Тревисе есть возможность перезапустить имеющийся билд, но нельзя раскатать новый из свежеподключенного проекта. Во всём были обвинены красноглазики, как обычно ;)

Мне же кажется, что проблема в том, что устройство Тревиса не предполагает возможности просто указать «собери мне новый билд». Давайте посмотрим, как работает эта CI-система.

  1. В репозитории появляются новые данные.
  2. Срабатывает хук на стороне Гитхаба, получаем название ветки.
  3. Проверяется наличие файла travis.yml в ветке, в которую пришли изменения.
  4. Если такой файл есть — гитхаб стучится в тревис и говорит: «Возьми эту вот ветку и раскатай по ней тесты».
  5. Тревис начинает работать.

Хук с новыми данными на стороне Гитхаба первичен, поэтому в документации сказано: «сначала подключаем хук, потом проталкиваем в репозиторий коммит с travis.yml».

Предположим, что мы решили-таки сделать кнопку «стартовать новый билд». Тогда нам нужно дать ответ на вопрос: «Из какой ветки стартовать?». Например, на сайте одной конференции ветка master не содержит и, возможно ещё долго не будет содержать, файла для тревиса, тесты есть только в ветке разработчиков. Да вообще, ветки master может не быть в принципе. Поэтому нужен какой-то интерфейс, в котором будут перечисляться все ветки, (а также все пулл-реквесты), имеющиеся в репозитории. Технически, используя api гитхаба это несложно сделать. Но нужно ли? Будет ли этот интерфейс понятен и удобен? Как часто он будет востребован (ответ — очень редко, только если ты не читал документацию).

Нет, красноглазики конечно виноваты, ведь один из них придумал unix way, а другой import this. И следуя им работает Тревис.