consdata.com
Blog techniczny Blog biznesowy Dział HR
EN
jenkins job

Automat dodający joby do Jenkinsa

author Dawid Kubiak
28 listopada 2019

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.

Dokumentacja

Repozytorium projektu

Najnowsze wpisy

  • Dostępność w PDF - dokumenty bez barier
  • Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS?
  • Czy wiesz, że w Angular 17 została wprowadzona alternatywa dla *ngSwitch?
Dołącz do nas

  • 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

Zapisz się

Podobne wpisy

post-image
WCAG

Dostępność w PDF - dokumenty bez barier

author
Kacper Hoffman 28 kwi 2025
post-image
angular

Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS?

author
Piotr Tatarski 7 kwi 2025
post-image
angular

Czy wiesz, że w Angular 17 została wprowadzona alternatywa dla *ngSwitch?

author
Dorian Mejer 10 mar 2025
Dołącz do nas

  • 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

Zapisz się na

newsletter

techniczny

consdata.com
  • Kontakt

    • sales@consdata.com
    • +48 61 41 51 000

  • Biuro

    • K9Office
      Krysiewicza 9/14
      61-825 Poznań
      Polska

  • Rozwiązania

    • Eximee
    • Kouncil
  • Blog Dołącz do nas
Copyright © 2024 Consdata. All rights reserved. Privacy Policy & Cookies
Chcemy używać plików cookie oraz skryptów podmiotów trzecich do polepszania funkcjonowania tej strony Zgadzam się