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

Как работает дроссель traviscc.org?

Моя компания использует travis-ci.org(бесплатную версию для программного обеспечения с открытым исходным кодом), чтобы автоматически создавать запросы на загрузку в наш репозиторий на github. У нас около 20 человек, которые отправляют запросы Pull на один и тот же репо в течение дня, и каждый из них создается в матрице, которая включает в себя две сборки для каждой сборки. Мы часто замечаем, что требуется несколько минут, а иногда и часов, - чтобы сборка началась, как только она была отправлена ​​на travis. (Симптом: сборка появляется на travis, но таймер не запускается, и на какое-то время нет выхода консоли.)

Я предполагаю, что это происходит, потому что travis-ci.org либо резервное копирование, либо дросселирование. Прежде всего

  • Предусматривается ли у Трэвиса намеренно дросселирование/ограничение скорости?

Если да, то как строятся дросселирование?

  • За вход? (например, для пользователя/организации github и т.д.).
  • За репо?

Строит дросселирование

  • Per "Build"?
  • Per "Build Job"

Знание этого позволит нам оптимизировать время сборки до конца в рамках ограничений, установленных travis-ci.org(который, мы надеемся, выровнен с хорошим поведением как свободный пользователь).

4b9b3361

Ответ 1

Если вы посмотрите страницу статуса travis-ci (http://www.traviscistatus.com/), вы заметите, что "Active Linux Builds для Open Source проекты" периодически расширяются. Основываясь на том, как работает система private build travis (одна очередь для всех "Сборка заданий" с одновременным запуском не более x), я подозреваю, что у них есть одна очередь для всех open-source Build Jobs.

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

Глядя на .travis.yml в репо, который вы опубликовали, вы можете заметить, что хорошие показатели производительности увеличиваются путем добавления кэширования apt и pip (http://docs.travis-ci.com/user/caching/). Вы также должны рассмотреть возможность перехода на новую контейнерную инфраструктуру Travis (http://docs.travis-ci.com/user/workers/container-based-infrastructure/). Это будет работать, однако, если вы сможете заменить команды sudo apt-get в своей сборке.

Ответ 2

В настоящее время Travis-CI предоставляет пять параллельных сборок для проектов с открытым исходным кодом, и это учитывается во всех репозиториях для входа или организации GitHub, как открылся Apache Software Foundation. Тревис подсчитывает каждое "задание сборки" по всем проектам и тянет запросы к этому пределу при параллельных сборках.

Ответ 3

В Travis CI все сборки находятся в очереди, независимо от вашего логина или репозитория.

Кроме того, если вы посмотрите историю состояния Тревиса CI (здесь http://www.traviscistatus.com/history), вы увидите, что они заметили и исследовали вопрос, который вы описали 7 апреля и 8 апреля. Они также обновили среду сборки 9 апреля (http://docs.travis-ci.com/user/build-environment-updates/2015-04-09/). Во время обновления очередь на процесс растет и должна быть обработана позже. Эта комбинация вещей, вероятно, является источником длительных задержек, которые вы испытали.

Надеюсь, это поможет вам.

Ответ 4

Я использую Travis для личного использования, и у меня очень мало сборок в день. Я часто замечал за несколько минут до начала сборки, так что это, вероятно, нормально. После небольшого исследования я не смог найти очень хорошие цифры о границах Трэвиса, но у них определенно есть (источник). Это вопрос GitHub, который спрашивает, могут ли они ограничить сборку для каждого проекта, чтобы они не ударяли их лимит пользователя/компании как можно быстрее. Это означает, что существует определенный предел. Бесплатная версия называется "Справедливое использование", поэтому я не совсем уверен, что это значит. Если ваши сборки работают медленнее, я бы рассмотрел ускорение сборки, чтобы вы максимально использовали их, прежде чем достигнуть своего предела.

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

Некоторые числа, которые я нашел:

Я буду следить за номерами пределов и обновлять свой ответ, если/когда я их штраф.