Aplikacja Teamcity Laboratorium 2017 T
Total Page:16
File Type:pdf, Size:1020Kb
Aplikacja TeamCity laboratorium 2017 T. Goluch 1. Wstęp Aplikacja TeamCity należy do grupy aplikacji ciągłej integracji (Continuous Integration). Ciągła integracja to praktyka programistyczna, która polega na częstym (ciągłym) budowaniu i testowaniu (integrowaniu) wytwarzanego oprogramowania za pomocą odpowiednich narzędzi. Cykl wytwarzania oprogramowania przedstawiony jest poniżej. Trigger (by change) Report Compile Test/Analyse Deploy Trigger – wyzwalacz, który rozpoczyna proces integracji; najczęściej stosowanym wyzwalaczem jest przesłanie kodu źródłowego do systemu kontroli wersji (source control system); Compile/Build – pierwszym krokiem jest zbudowanie aplikacji z kodu źródłowego; na tym etapie wykrywane są błędy w strukturze kodu, można również ustawić dodatkowe opcje kompilacji (w środowisku developerskim wyłączone ze względu np. na wydłużenie czasu kompilacji), które wyświetlają dodatkowe informacje, jak np. błędy w widokach; Deploy – następnym krokiem jest publikacja aplikacji na środowisko testów (dla aplikacji webowej jest to serwer np. IIS); Test/Analyse – najważniejszym krokiem jest uruchomienie testów oraz różnych aplikacji analizujących kod, np. pod kątem zgodności z przyjętymi standardami, i/lub pokrycie testami; Report – ostatnim krokiem jest stworzenie raportu z przebiegu całego procesu; w przypadku, kiedy nie zostały spełnione postawione warunki, informacja o błędzie przesyłana jest, np. za pomocą wiadomości e-mail, do odpowiednich osób. Aplikacja TeamCity posiada mechanizmy umożliwiające wykonanie wszystkich wymienionych kroków. Podstawową cechą TeamCity jest duży stopień niezależności od platformy. Sam serwer jest to aplikacja internetowa działająca w ramach kontenera serwletu JEE. Może być uruchamiana na wszystkich najnowszych wersjach systemu Windows, Linux i Mac OS X. Wspiera wiele języków programowania (m.in. Java, C#, PHP, Ruby, C, C++) oraz różnych narzędzi służących do publikowania aplikacji (m.in. Ant, NAnt, Rake, MSBuild, MSDeploy). Umożliwia również działanie w systemie pre-commit. Polega on na tym, że podczas wysyłania na system kontroli wersji kod nie jest automatycznie akceptowany, tylko przesyłany do serwera ciągłej integracji. Wykonywany jest pełen cykl i w momencie, kiedy proces zakończy się sukcesem, kod jest akceptowany i zapisywany. Jeżeli podczas T. Goluch }Aplikacja TeamCity-8B08 tego procesu wystąpią błędy, informacja wysyłana jest do osoby odpowiedzialnej za próbę zapisu, a kod wycofywany jest z systemu kontroli wersji. Przebieg takiej procedury przedstawiony jest na Rysunek 7. 2. Instalacja Aby zainstalować aplikację TeamCity należ ściągnąć najnowszą wersję tego narzędzia dla wybranego systemu operacyjnego ze strony https://www.jetbrains.com/teamcity/download/index.html. W przypadku systemu Windows należy: 1. Zainstalować aplikację (wymagane uprawnienia administratora) z domyślnymi ustawieniami. 2. Jako docelowy port wybrać inny port niż port 80 (np. 8080). 3. Zapisać domyślne ustawienia dla Build Agenta. 4. Zarówno usługę TeamCity jak i Build Agenta uruchomić jako użytkownik SYSTEM. 5. Uruchomić obydwie usługi zaznaczając odpowiednie pola. T. Goluch }Aplikacja TeamCity-8B08 6. Otworzyć stronę zaznaczając pole na ostatnim kroku. W przypadku sytemu Linux należy: 1. Upewnić się, że zainstalowane jest Java JDK w wersji ≥ 1.8 (java -version1) w przeciwnym razie – zainstalować, np. przez Apt-Get’a (Ubuntu): sudo apt-get install default-jdk. 2. Rozpakować pobrane archiwum Teamcity (format .tar.gz) poleceniem: tar -xvf TeamCity-X.X.X.tar.gz 3. Utworzyć nowy folder (najlepiej w dedykowanym folderze – /opt) i skopiować tam zawartość rozpakowanego archiwum np: sudo mkdir /opt/JetBrains sudo mv TeamCity /opt/JetBrains/TeamCity 4. Następnie należy zmienić właściciela katalogu wraz z jego zawartością: sudo chown -R <user> /opt/JetBrains/TeamCity 5. Teraz możemy przystąpić do utworzenia skryptu uruchamiającego/zamykającego serwer i agenta teamCity: sudo gedit /etc/init.d/teamcity 6. Przykładowa zawartość skryptu: #!/bin/sh # /etc/init.d/teamcity - startup script for teamcity export TEAMCITY_DATA_PATH="/opt/JetBrains/TeamCity/.BuildServer" case $1 in start) start-stop-daemon --start -c $user --exec /opt/JetBrains/TeamCity/bin/runAll.sh start ;; stop) start-stop-daemon --start -c $user --exec /opt/JetBrains/TeamCity/bin/runAll.sh stop ;; esac exit 0 7. Pozostało dodać uprawnienia umożliwiające na wykonywanie skryptu oraz skonfigurować automatyczne uruchamianie go wraz ze startem systemu: sudo chmod +x /etc/init.d/teamcity sudo update-rc.d teamcity defaults 8. Aby ręcznie uruchomić serwer i agenta uruchamiamy skrypt: bin/runAll.sh start. Domyślnym adresem dla dystrybucji systemu Windows jest http://localhost/2 a dla systemu Linux (archiwum tar.gz) jest to http://localhost:8111/. 3. Dodatkowi agenci3 Nic nie stoi na przeszkodzie aby na jednej maszynie zainstalować kilku agentów. Instalację samego agenta możemy pobrać z serwera TeamCity z menu Agents→Install Build Agents→MS Windows Installer (dedykowany dla Windows) albo Zip file distribution (inne systemy operacyjne – instalacja manualna). Należy pamiętać aby podczas instalacji podać/stworzyć inny – niż istniejącego/ych agenta/ów – folder instalacji. Podczas konfigurowania właściwości agenta należy podać URL istniejącego serwera TC http:/<adres_hosta>:<numer_portu> (serverUrl), nazwę agenta (name) oraz nowy, wolny port na którym będzie on nasłuchiwał (ownPort). 1 Polecenie wydajemy w oknie terminala, możemy je łatwo otworzyć za pomocą skrótu: Ctrl + Alt + T. 2 Jeżeli podczas instalacji podaliśmy inny port niż 80 to domyślnym adresem będzie http://localhost:XXXX/, gdzie XXXX to numer podanrgo portu. 3 https://handcraftsman.wordpress.com/2010/07/20/multiple-teamcity-build-agents-on-one-server/ T. Goluch }Aplikacja TeamCity-8B08 Następnie (jeszcze w czasie trwania instalacji) należy odszukać plik: <katalog_agenta>\launcher\conf\wrapper.conf i zmienić w nim nazwę serwisu. Jest to ważne, ponieważ każdy agent działa jako inna usługa i muszą mieć unikalne nazwy. # Name of the service wrapper.ntservice.name=<unikalna_nazwa_agenta> # Display name of the service wrapper.ntservice.displayname=<unikalna_wyświetlania_nazwa_agenta> Po dokonaniu tych zmian można zakończyć kontynuować instalację wybierając tryb uruchamiania agenta w postaci usługi4. Opcja wyświetl usługi lokalne w narzędziach administracyjnych panelu Sterowania pozwoli stwierdzić czy udało nam się poprawnie zainstalować i uruchomić wszystkich agentów. Autoryzacja agentów może zająć trochę czasu, komunikat: Agent has unregistered (will upgrade) oznacza pożądane zachowanie, które powinno doprowadzić do rejestracji usługi. Należy pamiętać, że wersja darmowa pozwala na podłączenie maksymalnie trzech agentów. 4. Repozytoria TeamCity obsługuje większość popularnych systemów kontroli wersji takich jak: Git – https://git-scm.com/, Mercurial – https://www.mercurial-scm.org/wiki/Mercurial, https://www.mercurial- scm.org/wiki/GitConcepts, 4 Jeśli zmiany w pliku wrapper.conf wykonaliśmy po zakończonym procesie instalacji. Na leży ręcznie zainstalować agentów poleceniem: <katalog_agenta>\bin\service.install.bat (wymagane uprawnienia administratora). T. Goluch }Aplikacja TeamCity-8B08 Subversion (SVN) – http://subversion.apache.org/, Perforce (P4) – https://www.perforce.com/, Team Foundation Version Control (TFS) – https://www.visualstudio.com/en-us/docs/tfvc/overview, Liczba zdalnych repozytoriów udostepniających wspomniane VCS’y jest imponująca. Opis większości można znaleźć tutaj. Na potrzeby laboratorium wystarczy nam konto na 1-2 wybranych a listy: Github – https://github.com (FREE: – unlimited collaborators, unlimited public repositories, 0 private repositories) – Git, SVN Gitlab – https://gitlab.com Bitbucket – https://bitbucket.org/ (5 users: FREE) – Git, Mercurial Assembla – https://www.assembla.com (FREE Repositories, Unlimited Private SVN, Git & P4, Unlimited users, Collaborative code review, 1 GB Storage, Limited to repository tools) – Git, SVN, P4 Project Locker – http://projectlocker.com/ (FREE – 1 user, 1 project, 50 MB storage) – Git, SVN Visual Studio – https://www.visualstudio.com/pl/team-services/continuous-integration/ CloudForge – http://www.cloudforge.com/ (FREE trials for 30 days) – Git, SVN SourceForge – https://sourceforge.net/ (FREE) Proszę tak wybrać aby wspierany był co najmniej jeden z wybranej grupy: Git (zalecany), Mercurial, Subversion (zalecany), TFS, Perforce. Klonowanie repozytorium Subversion Repozytorium SVN (aplikacja Blog.DAL w C# + testy funkcjonalne bazy danych MS SQL – Blog.DAL.Tests oraz biblioteka pomocnicza DbTestHelpers) dostępne są pod adresem: https://subversion.assembla.com/svn/blog-dal. Proszę sklonować jego zawartość do własnego zdalnego repozytorium. Przykładowo, po założeniu pustego repozytorium na platformie Projectlocker można łatwo dokonać migracji (opcja menu: Projects → <nazwa_repozytorium> → Action: Edit Properties →SVN Actions → Add Code To ProjectLocker. Wybieramy opcję: Other Subversion Server. T. Goluch }Aplikacja TeamCity-8B08 Teraz wystarczy podać adres repozytorium np. https://subversion.assembla.com/svn/blog-dal, w przypadku prywatnego repozytorium należy również podać dane do autentykacji. W przypadku powodzenia otrzymamy następujący komunikat: T. Goluch }Aplikacja TeamCity-8B08 Operacja migracji może to zajęć kilka minut – informację dostaniemy na maila. W kolejnym kroku proszę – przy pomocy odpowiedniego oprogramowania – np. klient VisualSVN – założyć lokalne repozytorium. Możemy posłużyć się komendą: svn checkout <svn_web_URL>/svn