Travis, czyli ciągła integracja


Na studiach uczą różnych rzeczy. Niektórzy twierdzą, że na studiach informatycznych nie przekazują wiedzy, która przyda się w zawodzie programisty. Po części przyznam im rację ale dodam od siebie 5 groszy: „To zależy” 🙂 Czasem są to rzeczy na prawdę elementarne, że aż czasem na prawdę boli. Ale jednak, czasem można dowiedzieć się czegoś na prawdę ciekawego. A co to ma wspólnego z tytułem wpisu, czyli integracją, a nawet nieprzerwaną integracją? O tym za chwilę.

Studia, nie tylko podstawy

Jako, że jestem jeszcze studentem uczęszczam na różne zajęcia. W kończącym się semestrze mam taki przedmiot jak „Programowanie aplikacji internetowych” (pozdrawiam prowadzącego 🙂 ). Mogę powiedzieć, że to właśnie do tej pory na tych zajęciach mogliśmy dowiedzieć się o wersjonowaniu kodu czy metodyce tworzenia oprogramowania TDD. Do tego w bonusie dostaliśmy informację o ciągłej integracji.

Travis się integruje!!

Ale co ma wspólnego z integracją jakiś Travis? Nie, nie przyszedł do nas na zajęcia żaden Travis żeby się zintegrować z przyszłymi programistami 🙂 Ciągła integracja (piękny potworek tłumaczeniowy), czy bardziej continuous integration (dalej CI) to też metodyka budowy oprogramowania. Sam Travis (pełna nazwa to Travis-CI) jest narzędziem, dzięki któremu możemy, jak nazwa wskazuje, wykorzystywać CI przy budowie naszej aplikacji. Dokładnie chodzi o punkt, gdzie jest powiedziane, że każdy commit powinien zostać zbudowany i przetestowany.

Zaczynamy imprezę

Travis-CI jest usługą powszechnie dostępną. Jej twórcy zintegrowali ją z GitHub’em, daje to możliwość uruchamiania i testowania Twoich projektów z GitHub’a niemalże automatycznie na Travis’ie. Aby współpraca z usługą CI była automatyczna dla jakiegoś projektu trzeba zrobić dwie rzeczy. W ustawieniach profilu na Travis trzeba „włączyć” repozytoria, które chcemy sprawdzać w serwisie.

Oraz w samym repozytorium trzeba dodać plik .tarvis.yml, który dla prostego projektu PHP może wyglądać w taki sposób:

language: php
php:
 - 5.3
 - 5.4
 - 5.4.3

Nie jesteś ograniczony tylko do podania języka w jakim mają być przeprowadzane testy, czy też wersji bibliotek jak to jest podane w powyższym przykładzie. Dostajesz możliwość zbudowania całego środowiska (w tym zmienne środowiskowe, czy dodatkowe paczki/pakiety/pluginy/rozszerzenia dla danego języka) w jakim będzie uruchamiana aplikacja. Ciekawą informacją jest fakt, że gdy podamy kilka wersji bibliotek języka oraz zestawów zmiennych środowiskowych, np. dla projektu pisanego w Ruby’m:

rvm:
  - 1.9.3
  - rbx-18mode
env:
  - FOO=foo BAR=bar
  - FOO=bar BAR=foo

to zostanie on zbudowany i przetestowany w 4 różnych konfiguracjach:

  • Ruby 1.9.3 ze zmiennymi FOO=foo oraz BAR=bar
  • Ruby 1.9.3 ze zmiennymi FOO=bar oraz BAR=foo
  • Rubinius w trybie 1.8 ze zmiennymi FOO=foo oraz BAR=bar
  • Rubinius w trybie 1.8 ze zmiennymi FOO=bar oraz BAR=foo

Pełny opis możliwości w tworzeniu pliku konfiguracyjnego .travis.yml można znaleźć w dokumentacji. Dużym plusem jest otwartość oprogramowania jakim jest Travis ponieważ umożliwia to postawienie takiego serwera na własnej maszynie. Możliwe jest nawet wykorzystanie tego oprogramowania bez ograniczeń w miejscach gdzie okaże się ono przydatne łącznie ze sprzedażą.

Można? Można!

Nie ma reguły gdzie można zdobyć ciekawe informacje czy wiedzę. Nawet na uczelni, gdzie stereotypowo dostajemy wiedzę sprzed 20 lat. A i nawet ciekawie jest i pośmiać się można 🙂 Trzeba tylko wyjść poza ramy zajęć obowiązkowych bo możliwości są bardzo duże.

Ciao 😀

Advertisements

One thought on “Travis, czyli ciągła integracja

  1. Pingback: Zarządzanie projektem od MS – TFS | Na Wypasie !!

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s