Lab 1 report
Lab 1
link ci: https://gitlab.stud.atlantis.ugent.be/thijsgeeraert/devops-project/-/pipelines/77696
Structuur ci Het bestaat uit 3 fases: build, package en run-game. De eerste twee fases maken allebei gebruik van cache voor de '.m2/repository'. De buildfase maakt een artifact die hergebruikt wordt in de package fase.
Het moeilijkste vond ik de service up te krijgen. ik had dit eerst bovenaan my ci/cd file gezet, maar dit wou niet werken (en is ook niet nodig want ik heb deze service enkel nodig tijdens de run-game).
vragen
What is ./mvnw and what is the advantage of using it above mvn? mvnw is een wrapper van maven, wat alles bevat dat nodig is voor het project. zo kun je het runnen zonder maven zelf te moeten installeren. Ook staat er een vaste mvn versie in waardoor dit voor iedereen hetzelfde is, beter reproduceerbaar dus.
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? cache gebruik je voor dependencies, artifacts voor builds. Cache wordt meestal gebruikt over meerdere jobs/pipelines terwijl artifacts bedoeld zijn om aan downstream jobs door te geven.
voor de maven dependencies heb ik dus cache gebruikt. In mijn build stage maak een artifact aan die ik dan hergebruik in de package stage.
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 is een developer environment, dit bevat alles voor de java app te bouwen en te compileren (javac, debugging utilities...). Deze dingen zijn echter helemaal niet nodig voor de java-app te runnen. Het is dus kleiner en heeft minder dependencies. In een CI/CD pipeline hebben we de JDK nodig om te compileren en images te bouwen. In productie zullen echter altijd JRE gebruiken.