Lab 1 Report
Link naar succesvolle run: https://gitlab.stud.atlantis.ugent.be/Harman/devops-project/-/pipelines/77713
Ik heb drie stages gemaakt: build, package en execute. In de build stage compileert Maven de code en en worden de nodige dependenies opgehaald. De package stage verpakt de applicatie in een Docker-image via Quarkus en pusht die naar de GitLab container registry. In de execute stage wordt de runner-image gebruikt om het spel effectief te starten met een Java-commando. (container wordt gestart)
Vraag 1: mvn is een commando om Maven te gebruiken dat lokaal al geïnstalleerd moet zijn. ./mvnw (Maven Wrapper) zorgt ervoor dat automatisch de juiste versie van Maven wordt gedownload en gebruikt, ook als Maven nog niet lokaal geïnstalleerd is.
Vraag 2: Cache wordt gebruikt om bestanden te bewaren tussen jobs en pipelines. De bestanden blijven bewaard zolang ze niet handmatig verwijderd worden. De cache gebruik ik voor de Maven-dependencies, omdat die niet vaak veranderen. Zo moet Maven niet telkens opnieuw installeren bij een nieuwe pipeline. Artifacts worden gebruikt om buildresultaten tijdelijk te bewaren tussen jobs van dezelfde pipeline. Artifacts verlopen na een ingestelde tijd. Dus de artifacts gebruik ik voor de buildresultaten. Trade-off: Caching maakt de pipeline sneller, maar als de dependencies ooit veranderen, moet de cache opnieuw vernieuwd worden.
Vraag 3: De 25-jdk image wordt gebruikt om de code te bouwen, omdat die de compiler bevat. De 25-jre image wordt gebruikt om de app uit te voeren, omdat die lichter is en sneller opstart. Als we 25-jdk voor beide zouden gebruiken, zou het wel werken maar de container zou groter en trager zijn. Als we 25-jre voor beide zouden gebruiken, zou de build niet werken omdat er geen compiler in zit.