Lab 1 Report
1. Successful run of the CI/CD job
https://gitlab.stud.atlantis.ugent.be/sepvhout/devops-project/-/jobs/249247
2. Structuur van .gitlab-ci.yml
Instellingen:
Gebruik van environment variables voor Quarkus.
Gebruik van caching (.m2/repository) en artifacts (target, game.log, results).
Pipeline stages:
- build: compileert de code via maven met ./mvnw compile
- package: bouwt en pusht het container image naar GitLab via de Quarkus plugin
- execute: voert de game automatisch uit met
devops-runner
Problemen en oplossingen:
in het begin begreep ik de yml niet super goed, en was AI mijn eerste keuze om op zoek te gaan naar een oplossing. Hierdoor kreeg ik er wat fouten uit zoals indentatie, service name van de devops-runner... uiteindelijk begreep ik mijn fouten door de leerstof nog eens door te nemen + wat extra opzoekwerk.
3. Questions
What is ./mvnw and what is the advantage of using it above mvn?
./mvnw is gewoon maven, maar dan als wrapper. Het zorgt ervoor dat iedereen dezelfde versie gebruikt. Anders moet iedereen zelf de juiste versie van maven installeren en kan het mislopen als je een andere versie hebt.
Explain the key differences between GitLab's cache and artifacts mechanisms. For each of Maven dependencies and build files, explain which mechanism you chose and why.
Cache: hergebruik van bestanden tussen jobs en pipelines.
Dit werd gebruikt voor .m2/repository zodat maven niet altijd alles moet dowloaden, zo gaat het sneller.
Artifacts: worden enkel bewaard binnen dezelfde pipeline voor latere jobs of om zelf te downloaden.
Werd gebruikt voor target/, game.log en results/ om de outputs beter zichtbaar te maken.
In this lab, we use a 25-jre image as the base for our runtime container and a 25-jdk image for the CI/CD build jobs. Explain the reasoning behind this choice.
De JDK bevat de compiler en build-tools, dit is nodig voor het builden.
De JRE bevat enkel wat nodig is om code uit te voeren, dit is dus kleiner en sneller.
Door JDK voor builds en JRE voor uitvoering te gebruiken, gaat het builden snel en blijft de uiteindelijke image klein.