Skip to content

Jak zainstalować Jenkinsa przy użyciu Docker Compose?

Cześć. Dzisiaj pokażę Wam jak możecie w przeciągu godziny zainstalować serwer Jenkins oraz uruchomić w nim swoje pierwsze zadanie.

Czym jest Jenkins?

Jenkins jest narzędziem open source służącym do automatyzacji pracy związanej z procesem Continuous Integration i  Continuous Delivery. Jest to narzędzie, które wspiera pracę programistów w ciągłym budowaniu, testowaniu a nawet automatycznej instalacji projektów na środowiskach testowych i produkcyjnych.

Czym jest Docker Compose?

Docker to oprogramowanie służące do uruchamiania aplikacji w środowisku zwirtualizowanym. Dzięki niemu możemy uruchomić aplikację w osobnym kontenerze, które jest niezależne od systemu operacyjnego. W ten sposób możemy przygotować różne środowiska korzystające z różnych narzędzi bez obawy konfliktów pomiędzy wersjami bibliotek i frameworków.

Sam Docker Compose jest narzędziem umożliwiającym definiowanie i uruchamianie aplikacji opartych na Dockerze. Dzięki temu narzędziu można zdefiniować za pomocą plików YAML całe środowiska składające się z wielu kontenerów. Jako przykład takiego środowiska mogę podać aplikację www, która składa się z kontenera zawierającego serwer www oraz drugiego kontenera zawierającego bazę danych dla tej aplikacji.

Wymagane narzędzia

Aby rozpocząć instalację Jenkinsa należy upewnić się, że posiadamy wymagane narzędzia. W związku z tym, że instalacja będzie oparta na narzędziu Docker Compose należy się upewnić, że mam je już zainstalowane.

Aby zweryfikować czy Docker Compose jest dostępny możecie wykorzystać tą komendę:

> docker-compose -v
Docker Compose version v2.0.0

Jeśli jeszcze nie macie tego narzędzia, to proponuję zainstalować je zgodnie z instrukcją na tej stronie: https://docs.docker.com/compose/install/

W przypadku Windowsa i Mac OS, Docker Compose jest składnikiem pakietu Docker Desktop. W przypadku Linuxa pakiet ten należy zainstalować oddzielnie.

Uwaga: wszystkie komendy w tym poradniku uruchamiane są z poziomu konsoli Linux, co oznacza, że nie zadziałają w standardowej konsoli systemu Windows. Tutaj proponuję skorzystać z Windows Subsystem for Linux (WSL), który można zainstalować na systemie Windows 10.

Utworzenie konfiguracji dla Docker Compose

Proponuję na samym początku utworzyć osobny katalog, w którym będziemy pracować nad projektem oraz dodatkowy katalog gdzie będziemy przechowywać dane z Jenkinsa (~/ jenkins_home ).

> mkdir jenkins
> mkdir ~/jenkins_home       
> cd jenkins 

Teraz tworzymy plik docker-compose.yml i kopiujemy do niego poniższą zawartość:

# docker-compose.yml
version: '3.7'
services:
  jenkins:
    image: jenkins/jenkins:lts
    privileged: true
    user: root
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins-lts
    volumes:
      - ~/jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/local/bin/docker:/usr/local/bin/docker

Powyższa konfiguracja pozwoli nam utworzyć kontener z najnowszą wersją serwera Jenkins (LTS). Najważniejsze elementy tej konfiguracji to:

  • image – określa nam obraz, z którego chcemy skorzystać.
  • ports – określa nam jakie porty chcemy udostępnić z kontenera na zewnątrz. W naszym wypadku będą to porty 8080 (www) oraz 50000 (api)
  • container_name – nazwa naszego kontenera
  • volumes – to wirtualne wolumeny, z których korzysta kontener. W naszym wypadku mamy tutaj katalog jenkins_home, który znajduje się na naszym systemie oraz dodatkowe dwa wolumeny, które umożliwiają korzystanie z Dockera z poziomu Jenkinsa.

Uruchamiamy kontener

Uruchomienie kontenera wykonuje się za pomocą jednej, prostej komendy:

> docker-compose up -d

Po uruchomieniu komendy Docker pobierze obraz Jenkinsa z serwerów oraz uruchomi kontener. W moim przypadku wyglądało to tak:

Zanim przejdziemy do przeglądarki musimy jeszcze skopiować hasło administratora, które zostało utworzone automatycznie podczas pierwszego uruchomienia serwera. Robimy to za pomocą komendy:

docker exec jenkins-lts cat /var/jenkins_home/secrets/initialAdminPassword

Pierwsze uruchomienie Jenkinsa

Mając już hasło możemy przejść do przeglądarki. W adres URL wpisujemy http://localhost:8080/ i powinna pojawić się nam poniższa strona:

Tutaj w pole Administrator password wpisujemy hasło, które przed chwilą skopiowaliśmy. Po wpisaniu hasła przechodzimy dalej Continue.

W następnym kroku mamy możliwość wyboru dodatków, które chcemy zainstalować na naszym serwerze. Tutaj proponuję skorzystać z domyślnej listy dodatków wybierając opcję Install suggested plugins.

Po kilku chwilach Jenkins powinien zainstalować wymagane dodatki.

W następnym kroku musimy utworzyć konto administratora. Po podaniu wymaganych informacji klikamy na Save and Continue.

Na następnym ekranie pojawi się informacja o adresie serwera. Zostawiamy tutaj domyślny adres i przechodzimy dalej (Save and Finish).

Podstawowa konfiguracja została zakończona!

Po przejściu dalej powinien ukazać się nam taki ekran:

Gratulację, właśnie zainstalowałeś Jenkinsa!

Tworzymy pierwsze zadanie

Pierwsze zadania zostanie oparte na prostym projekcie Hello World stworzonym w Javie: https://github.com/Coveros/helloworld. Aby umożliwić zbudowanie projektu należy skonfigurować Jenkinsa aby mógł skorzystać z narzędzia Maven.

W tym celu przechodzimy do panelu konfiguracyjnego Jenkinsa (Manage Jenkins):

W następnym ekranie przechodzimy do Global Tool Configuration:

Na następnym ekranie przechodzimy do sekcji Maven i klikamy Add Maven. Tutaj podajemy nazwę konfiguracji Maven (po prostu maven) i resztę zostawiamy z wartościami domyślnymi. Ustawienia zapisujemy.

Po skonfigurowaniu wracamy na główny ekran (klikamy na Dashboard) i tworzymy nasze pierwsze zadanie:

Na kolejnym ekranie definiujemy nasze zadanie. Podajemy jego nazwę oraz wybieramy typ Freestyle project.

Na nowym ekranie przechodzimy do sekcji Source Code Managment. Tam wybieramy Git i wpisujemy w pole Repository URl adres https://github.com/Coveros/helloworld.git. To adres naszego repozytorium Git w GitHubie.

W ten sposób zdefiniowaliśmy źródło projektu dla naszego zadania.

Później przechodzimy do sekcji Build, gdzie będziemy definiować nasze zadania związane z budowaniem projektu. Klikamy tutaj Add build step i wybieramy Invoke top-level Maven targets. Tutaj wybieramy zdefiniowaną wcześniej konfigurację maven. Dodatkowo określamy cele naszego procesu budowania (Goals): clean package.

Teraz dodajmy drugi krok naszego procesu budowania: Execute shell i podajmy tam komendę: java -cp target/helloworld-1.1.jar com.coveros.demo.helloworld.HelloWorld. Ta komenda uruchomi naszą aplikację i wyświetli wynik w konsoli.

Zapisujemy teraz naszą konfigurację i uruchamiamy nasze zadanie Build Now:

Bo kilku chwilach zadanie powinno się uruchomić i zakończyć sukcesem (kolor zielony).

Tutaj warto spojrzeć jak wyglądał cały proces budowania. Możemy to zrobić poprzez kliknięcie na linka #1. A potem klikamy na Console Output:

Na nowej stronie powinniśmy zobaczyć log z całego zadania.

W logu powinniśmy zobaczyć informację o prawidłowym zbudowaniu aplikacji oraz wyniku testowego wywołania aplikacji.

Zatrzymujemy kontenter

Uruchomiona wcześniej komenda docker-compose spowodowała, że kontener uruchomił się w tle. Jeżeli chcecie zatrzymać kontener wystarczy wywołać poniższą komendę w katalogu jenkins:

docker-compose down

Podsumowanie

W tym poradniku pokazałem Wam jak można w prosty sposób uruchomić serwer Jenkins. Co istotne, serwer uruchomiony jest w kontenerze ale zapisuje swoje dane do katalogu dostępnym na Waszym komputerze/serwerze. To powoduje, że jesteście w stanie w prosty sposób zarchiwizować te dane albo nawet przenieść je na inny komputer czy serwer. W ten sposób też dane nie zostaną utracone nawet w przypadku usunięcia kontenera.

Published inCI/CDDockerPoradnik

Be First to Comment

Dodaj komentarz

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