Cześć. Dzisiaj zaprezentuję Wam jak możecie w krótkim czasie uruchomić serwer TeamCity oraz uruchomić w nim swój pierwszy proces CI.
Ten artykuł wchodzi w skład cyklu pokazującego jak rozpocząć pracę w popularnych narzędziach CI/CD. W ramach artykułu pokażę Wam jak zainstalować narzędzie CI/CD oraz jak przygotować proces budowania oraz testowania prostego projekty opartego na Mavenie.
Czym jest TeamCity?
TeamCity jest serwerem ciągłej integracji i dostarczania (CI/CD) stworzonym przez firmę JetBrains, która znana jest dzięki narzędziom dla programistów, takich jak Resharper czy też IntelliJ IDEA. Pierwsza wersja serwera została udostępniona już 2006 roku i dostępna jest w postaci komercyjnej jak i darmowej. W tym drugim przypadku możemy wykorzystać darmową wersję również w projektach komercyjnych ale mamy kilka ograniczeń, takich jak maksymalna liczba buildów czy też agentów.
Czym jest Docker Compose?
Aby dowiedzieć się czym jest Docker Compose przejdź do artykułu: Jak zainstalować Jenkinsa przy użyciu Docker Compose?
Wymagane narzędzia
Przed rozpoczęciem pracy należy przygotować wymagane narzędzia. Opis tych narzędzi znajdziesz również na stronie: Jak zainstalować Jenkinsa przy użyciu Docker Compose?
Przygotowania do uruchomienia
Pracę nad instalacją rozpoczniemy od utworzenia dedykowanego katalogu, w którym będziemy przechowywać dane i konfigurację TeamCity.
> mkdir teamcity
> cd teamcity
W kolejnym kroku utworzymy trzy katalogi, w których serwer i agent będą zapisywały swoją konfigurację oraz logi.
> mkdir datadir
> mkdir logs
> mkdir agent_conf
W kolejnym kroku musimy jeszcze zmienić uprawnienia do powyższych katalogów. Wynika to z tego, że serwer oraz agent jest uruchomiony w kontenerze w ramach użytkownika bez uprawnień roota.
> sudo chown -R 1000:1000 datadir
> sudo chown -R 1000:1000 logs
> sudo chown -R 1000:1000 agent_conf
Instalujemy TeamCity
W kolejnym kroku tworzymy plik docker-compose.yml z poniższą zawartością:
version: "2.1"
services:
server:
image: jetbrains/teamcity-server:latest
ports:
- "8111:8111"
volumes:
- datadir:/data/teamcity_server/datadir
- logs:/opt/teamcity/logs
agent:
image: jetbrains/teamcity-agent:latest
volumes:
- agent_conf:/data/teamcity_agent/conf
environment:
- SERVER_URL=http://server:8111
Konfiguracja ta określa jakie kontenery chcemy uruchomić. W naszym przypadku będzie to serwer teamCity wraz z jednym agentem (osobnym modułem do uruchamiania zadań CI/CD). Najważniejsze parametry konfiguracji to:
- image – obraz docker, który chcemy wykorzystać w naszym serwerze
- ports – lista portów, które udostępniamy na zewnątrz kontenera. W naszej konfiguracji udostępniamy porty 8111 (portal www)
- container_name – nazwa naszego kontenera
- volumes – określa wolumeny, które są wykorzystane przez kontener. W naszej konfiguracji mamy katalogi współdzielone z systemem (podkatalogi w katalogu teamcity).
Uruchamiamy TeamCity
Uruchomienie kontenerów realizowane jest za pomocą komendy:
> docker-compose up -d
Po uruchomieniu przechodzimy do naszego serwera TeamCity dostępnego pod adresem: http://localhost:8111/. Po przejściu na ten adres powinien pojawić nam poniższy ekran:
Uwaga: pierwsze uruchomienie portalu może zająć kilka minut.
Tutaj wybieramy opcję Proceed i przechodzimy do kolejnego ekranu.
Tutaj wybieramy domyślną, wewnętrzną bazę danych HSQLDB i przechodzimy dalej (Proceed).
Na kolejnym ekranie zatwierdzamy umową dotyczącą licencji i przechodzimy dalej (Continue).
Pozostał nam jeszcze jeden krok przed uruchomieniem: utworzenie konta administratora. Podajemy wymagane dane (nazwa użytkownika i hasło) i klikamy na Create Account. Po utworzeniu konta powinien się pojawić następujący ekran:
Gratuluję, serwer TeamCity został poprawnie uruchomiony!
Autoryzujemy agenta
Do prawidłowej pracy serwer potrzebuje uruchomionych agentów budowania. Są to osobne aplikacje, które odpowiedzialne są za faktyczne uruchamianie procesów budowania. TeamCity umożliwia uruchomienie agentów na systemach Windows oraz Linux. W przypadku tego poradnika wykorzystujemy agenta dla systemu Linux, który będzie działał w ramach kolejnego kontenera Docker.
Podczas uruchomiania naszego systemu za pomocą docker-compose uruchomiliśmy serwer oraz jednego agenta. Agent ten standardowo nie jest może połączyć się z serwerem bez dodatkowej autoryzacji. Aby zautoryzować agenta należy przejść pod adres: http://localhost:8111/agents.html?tab=unauthorizedAgents .
Na powyższej stronie powinniśmy zobaczyć jednego agenta, który jest połączony ale wymaga autoryzacji. Tutaj klikamy Authorize i potwierdzamy wybór na następnej stronie.
Teraz jesteśmy już gotowi do uruchomienia pierwszego projektu.
Tworzymy pierwszy projekt
Przechodzimy teraz do strony z projektami i tworzymy nowy projekt: http://localhost:8111/admin/createObjectMenu.html?projectId=_Root&showMode=createProjectMenu&autoExpand=createFromUrl&cameFromUrl=%2Foverview.html#createFromUrl
Na nowej stronie podajemy adres https://github.com/czerniga/helloworld.git w Repository URL i zatwierdzamy wybór klikając Proceed.
Na następnej stronie zatwierdzamy domyślne opcje i przechodzimy dalej (Proceed).
Po zaimportowaniu repozytorium serwer TeamCity zaproponuje pierwszy krok naszego procesu budowania. Możemy zatwierdzić pierwszy krok klikając checkboxa Maven a potem w Use selected.
Po zatwierdzeniu zobaczymy nasz proces budowania z pierwszym krokiem nazwanym „Maven”. Krok ten zawiera komendę budującą projekt: mvn clean test. Naszym celem jest jednak zmiana tej komendy. Robimy to poprzez wybranie opcji Edit w kroku „Maven”.
Na nowej stronie zobaczymy dokładną konfigurację pierwszego kroku. Tutaj musimy zmienić opcję Goals na: „clean package”. Tak jak to pokazano na poniższym zrzucie.
Zmianę zatwierdzamy klikając Save na dole strony.
Teraz dodamy jeszcze prosty krok testujący nasz projekt poprzez uruchomienie pliku jar. Robimy to za pomocą opcji Add build step.
W drugim kroku wybieramy Runner type = Command Line. Natomiast w Custom script wklejamy poniższe komendy:
echo "Running tests"
java -cp target/helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld
W efekcie drugi krok powinien mieć poniższą konfigurację:
Zapisujemy krok poprzez kliknięcie Save.
Po skonfigurowaniu kroków naszego procesu możemy przystąpić do pierwszego uruchomienia naszego projektu. Robimy to poprzez kliknięcie przycisku Run.
Po kilku chwilach projekt powinien zakończyć się sukcesem.
W kliknięciu na pierwszy build mamy możliwość podejrzenia całego logu z procesu budowania i testowania (zakładka Build log).
Zatrzymujemy kontener
Kontenery zawierające nasz serwis zostały uruchomione z przełącznikiem powodującym pracę w tle. Jeśli chcecie zatrzymać portal należy wykonać polecenie:
docker-compose down
Podsumowanie
W tym poradniku pokazałem jak można uruchomić serwer TeamCity wraz z jednym agentem uruchomionym w kontenerze docker. Podana tutaj konfiguracja powoduje, że wszystkie dane serwera zapisywane są w katalogu na Waszym komputerze/serwerze. Z tego powodu dane nie zostaną skasowane w momencie zatrzymania czy usunięcia kontenerów. W ten sposób też migracja na nowe środowisko jest bardzo prosta (polega to na kopiowaniu katalogów).
Be First to Comment