Próbuje zrozumieć, czym zajmuje się Travis CI i kiedy należy go używać


86

Jestem bardzo nowy w Git i po odkryciu w nim małego błędu planuję wnieść swój wkład w jakiś projekt open-source w GitHub. Po rozwidleniu go i naprawieniu błędu zdecydowałem się na żądanie ściągnięcia i zauważyłem, że pojawia się:

Niepowodzenie - kompilacja Travis CI nie powiodła się

Patrząc na szczegóły, odkryłem, że jest to spowodowane Could not find .travis.yml, co miało sens, ponieważ nie zalogowałem się do Travis Cl i nie dodałem .travis.yml do repozytorium.

To jest mój pierwszy raz, kiedy słyszę o Travisie i tym, co nazywamy ciągłą integracją. Brzmi całkiem fajnie, więc aby dowiedzieć się więcej, poszukałem tego na Wikipedii.

Travis CI jest hostowaną, rozproszoną usługą ciągłej integracji używaną do tworzenia i testowania projektów hostowanych na GitHub. Travis CI automatycznie wykrywa, kiedy zatwierdzenie zostało wykonane i wypchnięte do repozytorium GitHub, które używa Travis CI, i za każdym razem, gdy to się stanie, spróbuje zbudować projekt i uruchomić testy . Obejmuje to zatwierdzenia do wszystkich gałęzi, nie tylko do gałęzi głównej.

Moje obecne rozumienie Travis CI jest takie, że to, co robi, automatycznie popycha projekt do przodu git commit -am ".."i nie całkiem rozumiem jakiejś jego części.

  1. Poprzez budowanie projektu i przeprowadzenie testów , jakie testy to będzie działać? A jak „zbuduje” projekt? (jak kompilowanie do binarnego?)

  2. Stwierdza, że ​​„Obejmuje to zmiany we wszystkich gałęziach” - ale co, jeśli nie chcę zatwierdzać wszystkich gałęzi?

  3. Czy to w porządku, jeśli w ogóle nie używam Travis Cl? W jakich okolicznościach najlepiej go używać (lub należy go użyć)?

Odpowiedzi:


104

Najprostszym sposobem wyjaśnienia Travis CI jest to, że uruchamia testy twojego programu za każdym razem, gdy korzystasz z GitHub (można to skonfigurować na wiele sposobów i zawsze możesz wyłączyć kompilacje w niektórych gałęziach). Chodzi o to, że często możesz bardzo szybko wykryć, czy twój commit coś zepsuł, i naprawić to, zanim stanie się to problemem. Poleciłbym uruchomienie Travis CI na każdym repozytorium GitHub, w którym masz testy jednostkowe i który używa języka programowania obsługiwanego przez Travis CI. Ponieważ skonfigurowanie Travis CI jest bardzo łatwe, zwykle nie widzę dobrego powodu, aby go nie używać, chyba że nie obchodzi Cię, czy zdałeś testy w swoim programie, czy nie. Jeśli masz więcej pytań, możesz zostawić komentarz. Możesz przeczytać więcej o Travis CI tutaj .


1
Mówi, że jest „bezpłatny” dla projektów open source, ale mówi, że pierwsze 100 kompilacji jest bezpłatnych. Więc ... to nie jest za darmo? Nawet pracując samodzielnie, mogłem bardzo szybko uzyskać 100 kompilacji. Czy źle to czytam? Nigdzie nie mogę znaleźć żadnych informacji. @ joshua-anderson
Mark Pieszak - Trilon.io

2
W przypadku projektów typu open source jest zawsze bezpłatny. W przypadku prywatnych repozytoriów otrzymujesz 100 darmowych kompilacji, zanim będziesz musiał zarejestrować się w płatnym planie.
joshua-anderson

Czy typowy przepływ pracy git nie pobiera najnowszych zatwierdzeń i łączy lokalnie i testuje, a następnie wypycha na zdalne?
Ben

A co z ludźmi, którzy tworzą strony internetowe za pomocą narzędzi CLI dla Angular, React lub Vue? Struktury zapewniają natychmiastową transpilację i testowanie informacji zwrotnych podczas uruchamiania serwera deweloperskiego. Czy jest jakaś różnica między tym a Travis CI, czy też powinienem powiedzieć między uruchomieniem testów jednostkowych przed zatwierdzeniem i ogólnie użyciem CI?
OzzyTheGiant,

Dlatego travis nie ma sensu, mogę łatwo porzucić travis, używając haków git commit i bloków wypychania, które zwracają błędy z polecenia test.
betoharres

16

Ponieważ już odkryłeś, czym jest Travis-CI, chciałbym bezpośrednio wskazać na pytania, które masz.

Jakie testy zamierza przeprowadzić budując projekt i uruchamiając testy? A jak „zbuduje” projekt? (jak kompilowanie do binarnego?)

W .travis.ymlpliku określasz swój system operacyjny, język programowania, gałąź repozytorium, nazwę pliku projektu i inne szczegóły. Czytając ten plik, Travis-CI użyje określonych kompilatorów zainstalowanych na ich serwerze do skompilowania naszego kodu. Prawdopodobnie będą miały ten sam mechanizm, co my dla Githuba. Po raz pierwszy mogą pobrać kod [jeśli określimy określone gałęzie, mogą pobrać kod tylko z tych gałęzi]. Ponadto, uwierzytelniliśmy się, aby korzystać z naszego konta w Travis-CI, za każdym razem, gdy robimy zatwierdzenie, powinno być jakieś powiadomienie o uruchomieniu do serwera Travis-CI, dlatego zostanie rozpoznane jako zatwierdzenie i rozpocznie się kompilacja.


Stwierdza, że ​​„Obejmuje to zmiany we wszystkich gałęziach” - ale co, jeśli nie chcę zatwierdzać wszystkich gałęzi?

Możesz określić różne gałęzie lub mastergałąź. I powinien kompilować tylko określone gałęzie określone w .travis.ymlpliku.


Czy to w porządku, jeśli w ogóle nie używam Travis Cl? W jakich okolicznościach najlepiej go używać (lub należy go użyć)?

Tak, w porządku. Żaden problem. Ale jakich korzyści będziesz tracić, nie używając tego łatwego do zintegrowania silnika z repozytorium. Za każdym razem, gdy zatwierdzasz, może się zdarzyć, że coś przegapi i nie może się skompilować z powodu kodu. Skąd będziesz wiedzieć? Dlatego powinieneś użyć Travis-CI.


Napisałem post na blogu, z którym możesz przeczytać, aby dowiedzieć się, co to jest Travis-CI, Continuous Integrations i jak połączyć Travis-CI z Twoim Github Repo. Napisałem go dla repozytorium Swift.


2

Myślę, że jestem w bardzo dobrej sytuacji, aby odpowiedzieć na twoje pytanie, ponieważ obecnie uczę się Travis CI. Pierwszy problem, który napotkałeś w pierwszej kolejności, jest taki, że projekt, do którego pracujesz, używa Travis CI do testowania i budowania projektu. Jeśli projekt nie używa Travis CI, nie natknąłbyś się na taki błąd.

Rozwiązaniem jest wejście na stronę Travis CI i dowiedz się, jak to działa i jak wpłynęło na projekt, nad którym pracujesz. Dzięki temu będziesz w stanie bardzo dobrze zrozumieć, co jest wadliwe w Twoim kodzie i jak to naprawić.

Aby odpowiedzieć na pierwsze pytanie dotyczące budowy projektu.

Jakie testy zamierza przeprowadzić budując projekt i uruchamiając testy? A jak „zbuduje” projekt? (jak kompilowanie do binarnego?)

Oznacza to, jak kod źródłowy jest przetwarzany przed użyciem / testem. To zależy od języka, w którym piszesz. Na przykład, jeśli projekt pisze w PHP. Nie ma zamiaru budować mojego kodu w pliku wykonywalnym, takim jak kod źródłowy C / C ++. Uruchomi mój kod PHP na interpretatorze PHP i przetestuje go, gdy to robi. Nadal przechodzi przez normalny proces kompilacji, przez który przechodzi twój preferowany język.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.