Lab 1 Report
Beste,
Eerst en vooral wens ik graag mijn excuses aan te bieden voor het laattijdig indienen van dit rapport.
Ik had moeite met de setup en heb hierdoor de deadline niet kunnen halen. Het installeren van de mavenwrapper lukte niet, de assistenten hebben mij in het tweede lab dan aangeraden om verder te werken met maven.
Ik ben er ook volledig van bewust dat u hier geen rekening mee houdt, maar biedt u nogmaals mijn excuses aan.
-
Link to a successful run of the CI/CD job that executed the game
https://gitlab.stud.atlantis.ugent.be/quentin/devops-project/-/pipelines/79048
-
Report on the structure of your
.gitlab-ci.ymlDe eerste stage en job verliepen vrij vlot en zonder problemen.
Bij de tweede stage, verloor ik wat tijd bij het zoeken van de juiste CLI-variabelen. Ook liep ik even vast bij het noteren van de values van deze variabelen (nl. met " ", of { }, zonder). Na wat opzoekwerk leek de beste optie de " "-notatie, want op deze manier werd foutieve data het best vermeden.
Bij de derde stage kwam stootte ik op heel veel fouten. Ik paste zowat alles en niks aan, maar bleef één foutmelding krijgen. Het bleek uiteindelijk te zijn omdat gitlab mijn repository-naam niet juist omvormde. Ik had nl. mijn gebruikersnaam ingesteld met een hoofdletter, wat gitlab niet op de juiste manier doorgaf.
Uiteindelijk zocht ik ook nog een tijd naar de cache & artifact optimalisatie. Het verschil tussen beiden was in eerste opzicht niet duidelijk, maar na wat opzoekwerk wel.
-
Answer the questions posed in the section above.
-
What is ./mvnw and what is the advantage of using it above mvn?
./mvnw is het executiecommando voor de mavenwrapper. Het voordeel van de wrapper is dat hiermee het volledige mavensysteem niet altijd geïnstalleerd hoeft te worden en dat iedereen dezelfde, consistente versie van maven kan gebruiken.
-
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. What are the trade-offs of your choices?
De cache wordt gebruikt om bestanden te delen tussen stages. Artifacts worden gebruikt om eind-toestanden of uitgangen te delen met een volgende fase.
Voor de maven-dependencies koos ik voor de cache. Hiermee zullen er snellere builds zijn, dankzij de gedeelde bestanden omdat deze niet elke keer opnieuw geïnstalleerd moeten worden. Een nadeel is echter dat wanneer 1 van deze bestanden verandert, de cache moet clearen. Voor de build files koos ik voor de artifact. De uitgang wordt bijgehouden van de vorige fase, en kan worden doorgegeven aan de volgende. Nadeel is wél dat dit veel opslag pakt.
-
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. What would be the impact (positive or negative) of using 25-jdk for both? What about using 25-jre for both?
De JDK bevat meer functionaliteit om java-code te compileren en op te bouwen. De JRE bevat enkel de functionaliteit om java-code te runnen. Dit komt dus goed overeen met het "builden" van de container image, en het runnen van de runtime container.
Als er twee keer een JDK gebruikt zou worden, zou dit eigenlijk wél goed werken omdat het builden en runnen in dezelfde omgeving gebeurt. Maar het runnen gebeurt dan wel in een omgevin met extra/ongebruikte functionaliteit, en dus onnodige geheugengebruik.
Als er twee keer een JRE gebruikt zou worden, zou dit niet lukken. De JRE bevat nl. niet de nodige functionaliteit om de code te compileren.
-