Automat dodający joby do Jenkinsa
W ogarniającym nas świecie mikroserwisów skala projektów do utrzymania staje się ogromna. Każdy z tych projektów musimy przecież: zbudować, przetesować, zdeployować itd. Przy dużej liczbie projektów przestaje to być trywialne. W tym artykule zajmiemy się pierwszym zagadnieniem - automatyzacją buildów, jednak opisany tutaj sposób bez problemu można zastosować do innych aspektów.
Do budowania projektów starajmy się używać jednego narzędzia, ogromnie wpłynie to na proces unifikacji. W tym artykule będziemy posługiwać się mavenem.
Do zautomatyzowania procesu posłuży nam Jenkins.
Przejdźmy do sedna, czyli jak budować dużą liczbę projektów z jak najmniejszym nakładem pracy i ilością kodu do utrzymania.
Startujemy
Przy założeniu, że projekty budujemy
mvn clean package
-/+ jakieś super ważne przełączniki typu -DskipTes...
;) jesteśmy w stanie w bardzo prosty i schludny sposób zbudować kod/konfigurację, która zautomatyzuje cały proces.
Automatyzację rozpoczniemy od użycia narzędzia: jenkins-job-builder
Instalacja:
pip install --user jenkins-job-builder
macOS:
brew install jenkins-job-builder
Definiujemy plik konfiguracyjny dla jenkins-jobs w lokalizacji /etc/jenkins_jobs/jenkins_jobs.ini
:
[jenkins]
query_plugins_info=False
user=jenkins #Użytkownik Jenkinsowy
password=93a1160c11dc014b7214d4e8769fe8c9
url=http://localhost:8080 #Url do jenkinsa
- user - Użytkownik Jenkinsowy
- password - API Token dla swojego użytkownika link
- url - Adres URL do Jenkinsa
Tak skonfigurowane narzędzie pozwoli nam utworzyć dowolny job jenkinsowy.
Utwórzmy plik o nazwie project1-build.yaml
w katalogu jobs
z zawartością
- job:
name: project-1-build
project-type: freestyle
disabled: false
builders:
- shell: 'mvn clean package'
Zasilenie jenkinsa nowo utworzonym jobem:
jenkins-jobs update jobs
Po wykonaniu polecenia, utworzony zostanie pierwszy z projektów jenkinsowych. Good Job!
Szablony
Uwielbiamy opakowywać wszystko w pewne wzorce, wspólne procesy, reużywać raz dobrze napisany kod. :) Dlatego ten wątek będzię esencją artykułu. Wiemy już, że projekty budujemy w bardzo podobny sposób. Zbudujmy więc pierwszy szablon.
Utwórzmy szablon o nazwie project-build-template.yaml
w katalogu jobs
- job-template:
name: '{name}-{subname}-build'
project-type: freestyle
disabled: false
builders:
- shell: 'mvn clean package'
Szablon posiada dwie zmienne
name : nazwa projektu
subname: numer oznaczajacy jeden z koljenych projektów
Zwróć uwagę na wartość w polu name {name}-{subname}-build
jest to pattern, po którym będzie szukany szablon.
Aby użyć szablonu tworzymy plik w katalogu jobs
o nazwie projects.yaml
- project:
name: project
subname:
- 1
- 2
- 3
jobs:
- '{name}-{subname}-build'
Całość kończymy aktualizacją jobów: jenkins-jobs update jobs
W ten sposób jednym ruchem wygenerowaliśmy 3 joby:
project-1-build
project-2-build
project-3-build
Każdy z nich zawiera definicję joba opisanego w szablonie o nazwie {name}-{subname}-build'
czyli wywołanie mvn clean package
Podsumowanie
Cel został osiągnięty! Raz napisana definicja builda została użyta wiele razy (w naszym przykładzie tylko 3 ;) ). Zmniejszyliśmy liczbę zdublowanych konfiguracji, dzięki czemu jesteśmy w stanie lepiej nimi zarządzać.
Był to prosty przykład ukazujący istnienie takiego narzędzia. Jeśli chcesz dowiedzieć się czegoś więcej - zostawiam kilka linków.
-
SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
B2B 19 680 - 27 220 PLN netto -
REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
B2B 14 950 - 21 000 PLN netto -
ZOBACZ WSZYSTKIE OGŁOSZENIA
newsletter
techniczny
Podobne wpisy
Czy wiesz, że w Angular 17 została wprowadzona alternatywa dla *ngFor?
-
SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
B2B 19 680 - 27 220 PLN netto -
REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
B2B 14 950 - 21 000 PLN netto -
ZOBACZ WSZYSTKIE OGŁOSZENIA