Lab 1 Report
Het .gitlab-ci.yml bestand kan worden onderverdeeld in 3 verschillende fasen. Deze fasen staan gelijst in stages en hebben elk hun eigen taak.
Fase 1: build (maven-build)
Deze taak is verantwoordeijk voor het compileren van de broncode met Maven. In deze fase worden ook cache en artefacten gebruikt. De map .m2/repository wordt gecachet zodat afhankelijkheden niet telkens opnieuw gedownload moet worden. En in de map target/ word als artefact opgeslagen zodat volgende taken (zoals bv containers opbouwen) deze bestanden kunnen hergebruiken zonder opniuew te compileren. Dit versnelt de uitvoering van de pipeline en voorkomt verspilling van resources.
Fase 2: package (maven-container-image-generation)
Deze tak bouwt de containerimage van de Quarkus-applicatie en pusht die naar de GitLab Conatiner Registry van het project.Authenticatie gebeurt met behulp van GitLab-variabelen, zodat GitLab CI veilig kan inloggen op de registry en de image kan publiceren. Met de ingestelde variabelen wordt de containerimage opgebouwd en gepusht naar
gitlab.stud.atlantis.ugent.be:5050/minadesmet/devops-project/logic-service:latest.
Fase 3: execute Deze taak draait een speciale Docker-container die de logic-service test door het spel automatisch uit te voeren via de run-game taak. De logic-server wordt als job-service mee opgestart. het spel draait met een speler die wordt ingesteld via omgevingsvariabelen. In deze integratietest wordt dus gecontroleerd of de logic-service correct functtioneert binnen de spelomgeveing. Deze fase vormt de eindcontrole van de volledige CI/CD-pipeline
Problemen en oplossingen: Voor het grootste deel verliep het opzetten van de CI/CD-pijplijn vrij vlot. De meeste fasen en taken waren eenvoudig te configureren en werkten meteen zoals verwacht. Het voornaamste probleem dat ik tegenkwam, zat bij fase 2 (package) en het correct instellen van de Quarkus-container-variabelen. Ik moest hier een hele tijd zoeken en testen voordat de authenticatie en push naar de GitLab Container Registry goed werkte. Verder waren er geen echte problemen en werkte alles relatief soepel.
https://gitlab.stud.atlantis.ugent.be/minadesmet/devops-project/-/pipelines/77170