Skip to content

Jak zainstalować własny serwer TeamCity przy użyciu Docker compose?

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:

Pierwszy ekran TeamCity
Pierwszy ekran TeamCity

Uwaga: pierwsze uruchomienie portalu może zająć kilka minut.

Tutaj wybieramy opcję Proceed i przechodzimy do kolejnego ekranu.

Ustawienie bazy danych dla TeamCity
Ustawienie bazy danych dla TeamCity

Tutaj wybieramy domyślną, wewnętrzną bazę danych HSQLDB i przechodzimy dalej (Proceed).

Licencja
Licencja

Na kolejnym ekranie zatwierdzamy umową dotyczącą licencji i przechodzimy dalej (Continue).

Tworzymy konto administratora
Tworzymy konto administratora

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:

Uruchomiony serwer TeamCity
Uruchomiony serwer TeamCity

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 .

Agenci
Agenci

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.

Tworzenie projektu
Tworzenie projektu

Na następnej stronie zatwierdzamy domyślne opcje i przechodzimy dalej (Proceed).

Dodawanie repozytorium GIT
Dodawanie repozytorium GIT

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.

Auto detekcja kroków
Auto detekcja kroków

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.

Zmiana pierwszego kroku
Zmiana pierwszego kroku

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ę:

Drugi krok
Drugi krok

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.

Kroki naszego procesu budowania
Kroki naszego procesu budowania

Po kilku chwilach projekt powinien zakończyć się sukcesem.

Pierwszy build
Pierwszy build

W kliknięciu na pierwszy build mamy możliwość podejrzenia całego logu z procesu budowania i testowania (zakładka Build log).

Log z pierwszego budowania
Log z pierwszego budowania

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).

Published inCI/CDDockerPoradnik

Be First to Comment

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *