Jenkins – jak zainstalować i jak zacząć działać?
Chciałbyś zacząć działać z Jenkinsem ale nie wiesz od czego zacząć? A może masz jakiś pomysł na usprawnienie swojego potoku, ale nie chcesz robić tego na środowisku produkcyjnym? Przeprowadzę Cię dzisiaj przez proces instalacji własnej instancji Jenkinsa z użyciem Vagranta.
Czym jest Vagrant? To narzędzie służące do prostego i szybkiego konfigurowania środowisk deweloperskich. Jest to jedno z narzędzi zgodnych z popularnym podejściem IaaC (Infrastructure as a Code), czyli przechowywania całej konfiguracji maszyn/systemów w postaci kodu. Na podstawie pliku konfiguracyjnego, Vagrant uruchamia kontener lub maszynę wirtualną i instaluje w niej wszystkie zdefiniowane narzędzia. W pliku konfiguracyjnym używamy języka deklaratywnego. Oznacza to, że opisujemy jedynie końcowy efekt jaki chcemy osiągnąć. W naszym przypadku chcemy dzięki temu uzyskać maszynę wirtualną z zainstalowanym Jenkinsem.
Na początku opiszę proces instalacji i jego składowe, a następnie przejdziemy do działania.
Wszystkie przedstawione tutaj skrypty możesz pobrać z tego repozytorium githuba.
Konfiguracja
Rzućmy okiem na konfigurację maszyny. Składnia Vagranta jest opracowana w taki sposób, aby była zrozumiała nawet bez jego znajomości. Na poniższym listingu widzimy, że na maszynie wirtualnej uruchomi się system Ubuntu. Mamy też informację o przekierowaniu portu 8080. Jest to domyślny port interfejsu webowego Jenkinsa. Dalej konfigurujemy maszynę wirtualną, tj. dostępność interfejsu graficznego i zasobów.
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/focal64"
config.vm.network "forwarded_port", guest: 8080, host: 8080
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.cpus = 2
vb.memory = "4096"
end
config.vm.provision "shell" do |shell|
shell.path = "setup_master.sh"
end
end
Na końcu uruchamiany jest skrypt shellowy (widoczny poniżej), który zainstaluje Jenkinsa. Pobiera on i instaluje wszystkie niezbędne paczki. Po zakończeniu procesu wyświetlony zostanie klucz. Będzie on nam potrzebny przy pierwszym uruchomieniu Jenkinsa.
#!/bin/bash
# tutaj instalujemy Jave z której będzie korzystać Jenkins
sudo apt-get install -y openjdk-11-jdk
# dodajemy klucz dla repozytorium paczek Jenkinsa w wersji stabilnej
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
/etc/apt/sources.list.d/jenkins.list'
# instalujemy jenkinsa
sudo apt-get update
sudo apt-get install -y jenkins
# pobieramy klucz potrzebny w procesie inicjacji Jenkinsa
KEY=$(sudo cat /var/lib/jenkins/secrets/initialAdminPassword)
echo "secret key = $KEY"
W repozytorium, do tego skryptu dodałem też instalację Dockera – przyda się to nam przy bardziej zaawansowanych ćwiczeniach.
Omówiliśmy już wszystkie elementy układanki, pora wziąć się do działania.
Instalacja Jenkins
Przed przystąpieniem do wykonywania poleceń zainstaluj w systemie Vagranta i VirtualBoxa. Są dostępne wersje dla Windowsa jak i Linuksa.
Pobierz kod ze wspomnianego wcześniej repozytorium. Użyj do tego gita lub pobierz plik ZIP z interfejsu webowego. Rozpakuj pliki w dowolnym katalogu. Następnie uruchom wiersz poleceń/terminal (w Windowsie naciśnij „flagę”, wpisz „cmd” i enter) i przejdź do katalogu ze źródłami. To jedno polecenie Vagranta pobierze nam odpowiedni obraz, uruchomi go i zainstaluje w nim Jenkinsa:
vagrant up
Na ekranie powinieneś zobaczyć log z kolejnymi etapami instalacji, podobny do tego:
$ > vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/focal64'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: jenkins_default_1613835068067_72193
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 8080 (guest) => 8080 (host) (adapter 1)
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
# tutaj sporo logów z procesu instalacji
...
default: Setting up docker-ce-rootless-extras (5:20.10.3~3-0~ubuntu-focal) ...
default: Processing triggers for man-db (2.9.1-1) ...
default: Processing triggers for systemd (245.4-4ubuntu3.4) ...
default: secret key = ae14a35719a94c52a0f7e4c3fce41c07
$ >
Gdy na końcu zobaczysz wyświetlony secret key instalacja przebiegła pomyślnie.
Teraz uruchom przeglądarkę i wpisz adres http://localhost:8080.
Kolejnym krokiem jest konfiguracja instancji Jenkinsa. Na ekranie powinien wyświetlić się ekran powitalny. Jako hasło administratorskie podaj secret key ze swojego logu instalacji Jenkinsa. Po kliknięciu „Kontynuuj” pojawi się pytanie o instalację wtyczek. Polecam wybrać „Zainstaluj sugerowane wtyczki„. Następnie zobaczymy proces instalacji wtyczek podobny do tego na poniższym screenie:
Instalacja może potrwać 5-10 min w zależności od Twojego łącza. Następnie zostaniemy poproszeni o stworzenie konta administratorskiego. Wpisz dane według uznania i zapisz.
Na ostatnim etapie instalator zapyta nas o URL instancji Jenkinsa. Zostawiamy to bez zmian, to jest http://localhost:8080
Gratulacje! Twój Jenkins jest gotowy do pracy 🙂
Pierwszy job pipeline w Jenkins
O tym czym jest job w Jenkinsie pisałem już w tym poście. W skrócie przypomnę, że jest to zadanie, które możemy cyklicznie uruchamiać. Teraz zajmiemy się uruchomieniem Twojego pierwszego joba. Sprawdzimy w ten sposób czy wszystko działa jak należy.
Na stronie głównej Jenkinsa wybierz „Create a job”. W oknie konfiguracji wpisz dowolną nazwę dla projektu. Ja wybrałem „moj-pierwszy-job„. Jako typ joba wybierz „Pipeline” i zatwierdź OK.
Uruchomi się ekran konfiguracji joba. Na samym dole tej strony znajdziesz pole tekstowe na wprowadzenie kodu pipeline’a. My skorzystamy z gotowego już szablonu. W prawym górnym logu tego pola znajdziesz menu rozwijane. Wybierz z niego „Hello World” a następnie kliknij „Zapisz”. Powinno to wyglądać tak jak poniżej:
Nie pozostało teraz nic innego jak tylko kliknąć i poczekać kilka sekund na wykonanie się joba. Po uruchomieniu zobaczymy w Stage View jeden pomyślnie wykonany przebieg z napisem „Hello”.
Świetnie! Masz za sobą instalację Jenkinsa i uruchomienie pierwszego joba. Rozgość się, przejrzyj konfigurację i listę dostępnych pluginów. Teraz już możesz zacząć automatyzować swoje środowisko.
Jeśli chcesz teraz wyłączyć maszynę wystarczy w wierszu poleceń znów przejść do katalogu z plikiem Vagrantfile i wywołać polecenie:
vagrant halt
Chciałbyś poradnik jak skonfigurować joba dla konkretnej technologii? Koniecznie napisz o tym w komentarzu.
Mam błąd pod czas ściągania Varganta – w consoli „Failed to load resource: the server responded with a status of 451() ” Unavailable For Legal Reasons.
Prawdopodobną przyczyną jest blokada w sieci firmowej/wewnętrznej, z której się łączysz. Spróbuj połączyć się z innej sieci.
W moim przypadku rownież miałem problemy z instalacja Jenkinsa z użyciem vagranta. Podczas wykonywania komendy vagrant up nie mogłem się połączyć z wirtualną maszyną. Udało mi się rozwiązać problem w ten sposób
RUN AS ADMIN > CMD > bcdedit /set hypervisorlaunchtype off
Uruchom ponownie.
Wazne zeby pamietac ze jak skonczymy prace z vagrantem powinnismy ustawic ta komende na on i uruchomic ponownie
Hej, wykoczyło mi parę błędów, z wieloma sobie poradziłem ale został mi ten jeden, pod koniec wykonywania komendy „vagrant up”. Po wielu zielonych linijkach pojawia się ostrzeżenie
„default: Warning: apt-key output should not be parsed (stdout is not a terminal)”.
Następuje kilka zielonych linijek i znów:
„default: W: GPG error: https://pkg.jenkins.io/debian-stable binary/ Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 5BA31D57EF5975CA
default: E: The repository 'https://pkg.jenkins.io/debian-stable binary/ Release’ is not signed.”
Po kolejnych zielonych liniach sytuacja powtarza się wielokrtonie. na samym końcu mam:
„default: usermod: user 'jenkins’ does not exist
default: Failed to restart jenkins.service: Unit jenkins.service not found.
default: cat: /var/lib/jenkins/secrets/initialAdminPassword: No such file or directory
Secret key = ”
i w tym miejscu output się urywa. Co może być nie tak? Używam Win10.
Rzeczywiście był błąd w konfiguracji ze względu na zmiany w repo Ubuntu.
Zaktualizowałem, sprawdź teraz.
u mnie poszlo jak uruchomilem reczenie virtual box i ubuntu ktore juz bylo zaciagniete przez failujacy skrpyt vagrant up, po uruchomieniu virtual boxa i ubuntu i ponowym wpisaniu vagrant up wszystko ladnie poszlo i sie zainstalowalo, mam pytanie jak teraz zrobie vagrant halt to zeby ponownie uruchomic jenkinsa z moimi ustawieniami to mam wpisac jeszcze raz vagrant up?
Tak, wystarczy
vagrant up
i po chwili Jenkins będzie znów gotowy do pracy, z zachowaniem konfiguracji.