Jenkins – instalacja

Od jakiegoś czasu siedzę już w tematyce DevOps CI CD. Postanowiłem sobie ułożyć kilka rzeczy w głowie i zacznę od Jenkins’a. Uważam że jest to podstawowe narzędzie do Continuous Integration / Continuous Delivery i Continuous Deployment. Wpisuje się także bardzo dobrze w DevOps gdyż jest narzędziem który wspomaga zarówno system deweloperski i eksploatacyjny. Z jednego miejsca można zarządzać pobranie wystawionego na github oprogramowania, sprawdzić czy jest poprawne pod względem możliwości skompilowania, skompilować, wdrożyć w system testowy, przeprowadzić testy, wdrożyć w system produkcyjny. Ostatnia cześć jednak jest lepiej jak dzieje się już nie automatycznie a zaplanowana przez administratorów. Opis dotyczy Jenkins 2.89.4.

Czy Jenkins jest jedyny, nie. Jest wiele innych, jednak wydaje mi się że jenkins jest chyba najbardziej popularny, a przykłady innych to: TeamCity, Chef, Pupet.
Jest to darmowe narzędzie, które wymaga javy. Strona domowa. Pobieramy plik WAR i uruchamiamy za pomocą:

java -jar jenkins.war

Można tutaj też zauważyć że do działania potrzebna jest zainstalowana JAVA.
Podczas uruchamiania można zauważyć wpisy:

INFO: Started ServerConnector@2f7a7219{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}

czyli nasz jenkins wystawił serwer WWW na porcie 8080, protokół http na wszystkich IP. Drugim takim ważniejszym wpisem jest:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

d9e4c26c7a5d4a858d3fa081410eaf6d

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

Tutaj jest hasło które trzeba podać podczas pierwszego próby zalogowania się do Jenkinsa. Jak już podamy ten klucz to wtedy Jenkins zapyta nas się czy chcemy zainstalować domyśle pluginy czy sami wybrać.

Podczas uruchamiania można zmieniać niektóre parametry startowe, np. domyślnie HTTPS jest wyłączony ale można to włączyć za pomocą przełącznika:

--httpsPort=8443

lub zmienić port http na 80 za pomocą:

--httpPort=80

W celu wyświetlenia wszystkich dostępnych parametrów należny wykonać:

java -jar jenkins.war --help

Ostatnim krokiem będzie wpisanie danych dla nowego użytkownika który będzie jako główny administrator.

Teraz już tylko nic innego tylko zacząć korzystać.

Na sam koniec opisze jak postawić taki sam serwer jenkinsa na docker. Zakładam że serwer dockera już mamy, zatem pobieramy obraz jenkinsa, najlepiej z oficjalnego repozytorium czyli:

>docker pull jenkins

Sprawdzamy jaką wersję mamy:

Od jakiegoś czasu siedzę już w tematyce DevOps CI CD. Postanowiłem sobie ułożyć kilka rzeczy w głowie i zacznę od Jenkins’a. Uważam że jest to podstawowe narzędzie do Continuous Integration / Continuous Delivery i Continuous Deployment. Wpisuje się także bardzo dobrze w DevOps gdyż jest narzędziem który wspomaga zarówno system deweloperski i eksploatacyjny. Z jednego miejsca można zarządzać pobranie wystawionego na github oprogramowania, sprawdzić czy jest poprawne pod względem możliwości skompilowania, skompilować, wdrożyć w system testowy, przeprowadzić testy, wdrożyć w system produkcyjny. Ostatnia cześć jednak jest lepiej jak dzieje się już nie automatycznie a zaplanowana przez administratorów. Opis dotyczy Jenkins 2.89.4.

Czy Jenkins jest jedyny, nie. Jest wiele innych, jednak wydaje mi się że jenkins jest chyba najbardziej popularny, a przykłady innych to: TeamCity, Chef, Pupet.
Jest to darmowe narzędzie, które wymaga javy. Strona domowa. Pobieramy plik WAR i uruchamiamy za pomocą:

java -jar jenkins.war

Można tutaj też zauważyć że do działania potrzebna jest zainstalowana JAVA.
Podczas uruchamiania można zauważyć wpisy:

INFO: Started ServerConnector@2f7a7219{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}

czyli nasz jenkins wystawił serwer WWW na porcie 8080, protokół http na wszystkich IP. Drugim takim ważniejszym wpisem jest:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

d9e4c26c7a5d4a858d3fa081410eaf6d

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

Tutaj jest hasło które trzeba podać podczas pierwszego próby zalogowania się do Jenkinsa. Jak już podamy ten klucz to wtedy Jenkins zapyta nas się czy chcemy zainstalować domyśle pluginy czy sami wybrać.

Podczas uruchamiania można zmieniać niektóre parametry startowe, np. domyślnie HTTPS jest wyłączony ale można to włączyć za pomocą przełącznika:

--httpsPort=8443

lub zmienić port http na 80 za pomocą:

--httpPort=80

W celu wyświetlenia wszystkich dostępnych parametrów należny wykonać:

java -jar jenkins.war --help

Ostatnim krokiem będzie wpisanie danych dla nowego użytkownika który będzie jako główny administrator.

Teraz już tylko nic innego tylko zacząć korzystać.

Na sam koniec opisze jak postawić taki sam serwer jenkinsa na docker. Zakładam że serwer dockera już mamy, zatem pobieramy obraz jenkinsa, najlepiej z oficjalnego repozytorium czyli:

>docker pull jenkins

Sprawdzamy jaką wersję mamy:

$ docker image inspect -f '{{range $index, $value := .Config.Env}}{{if eq (index (split $value "=") 0) "JENKINS_VERSION" }}{{range $i, $part := (split $value "=")}}{{if gt $i 1}}{{print "="}}{{end}}{{if gt $i 0}}{{print $part}}{{end}}{{end}}{{end}}{{end}}' jenkins
2.60.3

Teraz uruchamiamy kontener o nazwie mojjenkins z obrazu jenkins z przekierowaniem portu 8080 z kontenera na port 80 na serwer dokerowy.

$ docker run -d --name mojdocker -p 80:8080 jenkins
af50f8f63cb32b0af4d673baf164f9189c2d7c2f98f866e4695de81c30e96294

sprawdzamy czy działa:

$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af50f8f63cb3 jenkins "/bin/tini -- /usr/l…" 52 seconds ago Up 50 seconds 50000/tcp, 0.0.0.0:80->8080/tcp mojdocker

Zalogować się na port 80 ma maszynę docker i mamy już działającego jenkinsa.