Lab 1 Report
successful run of the CI/CD job
Structuur van de pipeline
De pipeline bestaat uit drie fasen:
- Build: compileert de Java code met Maven ./mvnw compile.
- Package: bouwt en pusht de container image naar de GitLab Container Registry.
- Execute: draait het spel automatisch om te controleren of alles goed werkt. Hierbij draait de logic-service als een aparte achtergrondservice waar het spel mee communiceert, zodat we kunnen testen of onze code correct samenwerkt in een realistische omgeving.
Porblemen die ik tegenkwam
Een probleem dat ik tegenkwam was dat ik geen package in de Container Registry zag. Dit kwam doordat ik nog niet de stap had toegevoegd om de container image te bouwen en te pushen met ./mvnw package -Dquarkus.container-image.push=true. Een ander probleem was dat de caching van Maven dependencies niet werkte. Door online te zoeken hoe caching met Maven normaal gedaan wordt, kwam ik een artikel tegen dat dit goed uitlegde. Nadat ik de instructies volgde, werkte de caching zoals verwacht
Antwoorden op vragen
What is ./mvnw and what is the advantage of using it above mvn?
./mvnw` is de Maven Wrapper. Het zorgt ervoor dat iedereen dezelfde Maven-versie gebruikt, ongeacht wat lokaal geïnstalleerd is. Zo zijn builds reproduceerbaar en hoef je Maven niet zelf te installeren op de runner.
Cache vs Artifacts
Cache: gebruikt voor Maven dependencies .m2/repository, kan hergebruikt worden tussen jobs en pipelines.
Artifacts: gebruikt voor build output target/, zodat latere jobs in dezelfde pipeline deze bestanden kunnen gebruiken.
25-jre vs 25-jdk
Voor de build jobs gebruiken we de 25-jdk image omdat deze de volledige Java Development Kit bevat, inclusief de compiler, waardoor de code kan worden gecompileerd. Voor de runtime containers gebruiken we de 25-jre image omdat deze lichter en kleiner is en alleen de Java Runtime Environment bevat, wat voldoende is om de applicatie uit te voeren. Als je 25-jdk voor alles zou gebruiken, zou alles wel werken, maar de runtime container wordt onnodig groot. Als je daarentegen 25-jre voor alles gebruikt, faalt de build omdat er geen compiler aanwezig is om de code te compileren.