2015-04-10 11 views
26

Moja firma używa travis-ci.org (darmowa wersja dla oprogramowania open source), aby automatycznie budować wnioski ściągać do naszego repozytorium na github. Mamy około 20 osób przesyłających żądania Pull do tego samego repo w ciągu dnia, a każdy z nich jest zbudowany w macierzy, która obejmuje dwa Build Jobs na Build. Często zauważamy, że po wysłaniu na travis trwa kilka minut, a czasem godzin. (Objaw: kompilacja pojawia się na travisie, ale licznik czasu nie uruchamia się i nie ma żadnego wyjścia konsoli przez jakiś czas.)Jak buduje się przepustnica travis-ci.org?

Zakładam, że tak się dzieje, ponieważ travis-ci.org jest archiwizowany lub kompiluje przepustnice. Przede wszystkim

  • Czy celowo celuje w konstrukcje przepustnicy/ograniczenia prędkości?

Jeśli tak, w jaki sposób są dławione kompilacje?

  • Per logowania? (Czyli za użytkownika github/organizacji, etc.)
  • Per repo?

Are buduje dławiony

  • Per "Build"?
  • Za "Utwórz zadanie"?

Znajomość tego pozwoli nam zoptymalizować nasz czas budowy do końca w ramach ograniczeń travis-ci.org (które, mam nadzieję, są zgodne z dobrą grą jako wolny użytkownik).

+0

Masz na myśli "wyzwolenie", gdy mówisz "przepustnica"? –

+0

Niezupełnie, przypuszczam, że mógłbym użyć słowa "queued" zamiast dławionego, ale jest to część tego pytania - to celowe dławienie buduje procesy, jeśli uruchamiamy zbyt wiele naraz (20 osób przesyłających PR w ciągu dnia do to samo repozytorium)? Mogę zaktualizować pytanie: –

+0

Czy to jest wersja open source? Nigdy nie miałem czasu na zbudowanie travisu. –

Odpowiedz

16

Jeśli przejrzysz stronę statusu Travis-Ci (http://www.traviscistatus.com/), zauważysz, że "Aktywne projekty Linux dla Open Source" okresowo wygasają. Na podstawie tego, jak działa prywatny system budowania Travis (pojedyncza kolejka dla wszystkich "Build Jobs" z nie więcej niż x działaniem w tym samym czasie), podejrzewam, że mają jedną kolejkę dla wszystkich otwartych źródeł Build Jobs.

Możesz podzielić swoją kompilację na wiele zadań, z których każda zakończyłaby się szybciej. Kiedy Travis jest pod lekkim użyciem, będą działały równolegle, a twoja kompilacja powróci wcześniej, ale kiedy Travis uruchamia wiele innych buildów, twoje mogą być uruchamiane tylko sekwencyjnie.

Patrząc na .travis.yml w repo pan pisał, można zauważyć wzrost wydajności dobrych dodając apt i pip buforowanie (http://docs.travis-ci.com/user/caching/). Powinieneś także rozważyć przejście na nową infrastrukturę opartą na kontenerach Travis (http://docs.travis-ci.com/user/workers/container-based-infrastructure/). Będzie to jednak działało tylko wtedy, gdy będziesz w stanie zamienić komendy sudo apt-get w swojej kompilacji.

1

używam Travisa do użytku osobistego i mam bardzo mało buduje dziennie. Często zauważyłem kilka minut opóźnienia przed rozpoczęciem budowy, więc prawdopodobnie jest to normalne. Po niewielkich badaniach nie udało mi się znaleźć bardzo dobrych liczb dotyczących limitów Travisa, ale zdecydowanie mają one pewną wartość (source). Jest to kwestia GitHub z pytaniem, czy mogą ograniczyć kompilacje dla każdego projektu, aby nie osiągnęły one tak szybko limitu użytkownika/firmy. Oznacza to, że obowiązuje pewien limit. Darmowa wersja jest opisana jako "dozwolony użytek", więc nie jestem do końca pewien, co to oznacza. Jeśli Twoje kompilacje działają powoli, zajrzę do speeding up the build, aby uzyskać jak najwięcej z nich przed osiągnięciem limitu.

Niestety, nie mogę zaoferować rzeczywiste liczby, ale należy zrobić wszystko, aby zoptymalizować buduje jak to jest. Zgaduję, że nie mogą mieć żadnych twardych ograniczeń, ponieważ prawdopodobnie wciąż rosną i zmieniają to, co potrafią ich systemy.

Niektóre numery znalazłem:

będę contine szukać liczb granicznych i zaktualizować moją odpowiedź, jeśli/kiedy grzywnę je.

3

Na Travis CI, wszystkie wersje są w kolejce, niezależnie od loginu lub repozytorium.

Ponadto, jeśli spojrzysz na historię statusu Travis CI (tutaj http://www.traviscistatus.com/history), zobaczysz, że zauważyli i zbadali problem opisany 7 kwietnia i 8 kwietnia. Zaktualizowali także swoje środowisko kompilacji 9 kwietnia (http://docs.travis-ci.com/user/build-environment-updates/2015-04-09/). Podczas aktualizacji kolejka do przetwarzania rośnie i musi zostać przetworzona później. Ta kombinacja rzeczy jest prawdopodobnie źródłem długich opóźnień, których doświadczyłeś.

Mam nadzieję, że to ci pomoże.

Powiązane problemy