Skip to main content

Jenkins CI/CD

jenkins_logo

Jenkins is een CI/CD server die al heel wat jaren op z'n teller heeft. Het resultaat is een uitgebreide community en veel integratiemogelijkheden.
Het is niet dat Jenkins minder relevant geworden is maar het landschap van CI/CD-tools is de laatste jaren sterk geëvolueerd en uitgebreid. In deze workshop gaan we vooral aan de slag met enkele continuous integration-mogelijkheden van Jenkins, vooral om aan te tonen dat er, naast gitlab (die we verder gaan gebruiken) en github, ook nog andere mogelijkheden zijn om pipelines te bouwen voor CI/CD. We hadden ook voor andere tools kunnen kiezen zoals Azure Devops, Travis CI, Circle CI, Github Actions...

Voorbereiding

Voor deze opdracht is een Linux VM nodig. De opgave werd getest op Ubuntu 22.04, maar zal met minimale wijzigingen ook werken op andere recente distributies.

Je mag op dit moment hiervoor een eerste Ubuntu VM aanmaken (24.04). Geef deze de naam IAC-WS-SRV1-FamilienaamVoornaam. We zullen later nog een tweede server aanmaken, maar die is voorlopig nog niet nodig.
Kies bij Override root disk offering voor een custom waarde van 40GB. Deze VM mag in het standaard Ikdoeict Shared Network 01 geplaatst worden. Als Compute Offering kies je ikdoeict - Linux non-GUI

  • Installeer de laatste updates op de vm
  • Installeer Java 21 (momenteel ondersteunde versie voor Jenkins op Ubunti 22.0.4): sudo apt install fontconfig openjdk-21-jre
  • Verifieer de versie: java -version (je zou '21' moeten zien)
  • We zullen met een Python project werken. Installeer dus meteen ook pip en de virtual environment package al: sudo apt install python3-pip python3-venv
  • wijzig METEEN de wachtwoorden op deze servers zodat enkel jij die kent. Dat is nodig om de persoonlijke gegevens later in dit labo goed te beveiligen.
  • installeer ook Git, mocht dit nog niet aanwezig zijn: sudo apt install git

Maak een fork aan van https://gitlab.com/ikdoeict/vakken/OPO_Infrastructure_As_Code/labs/IaC-docker_flask_demo

Deze repo bevat een eenvoudige website, die we zullen gebruiken om de continuous integration te testen.

Installatie Jenkins

In de praktijk is het makkelijk om Jenkins als een kant en klare image binnen te halen en als container uit te voeren. Om pedagogische redenen kiezen we hier voor een klassieke installatie.

We zullen Jenkins installeren op de eerste server (Server1)

info

Zoek de installatie-instructies voor Jenkins op de officiële website: https://www.jenkins.io

Als de server opgestart werd, moet het mogelijk zijn om de webinterface te bereiken op [ip-adres]:8080.

Log daar in met het wachtwoord dat je op je server kan vinden (lees de instructies op het scherm).

Doorloop daarna de wizard:

  • Kies ervoor om de lijst met plugins zelf te kiezen
  • Behoud de voorgestelde plugins, maar vul aan met deze extra plugins

Niet alle plugins staan overigens in de lijst. Later in deze opgave zullen we er nog enkele toevoegen.

Maak als laatste stap van de wizard een user aan. Bewaar het wachtwoord uiteraard zorgvuldig.

tip

Na het aanmelden met de aangemaakte gebruiker is het aangewezen om in je profiel van je Jenskins-user de timezone in te stellen. Anders zullen alle timestamps in UTC vermeld worden...