Lab 1 Report
Verslag labo 1
Link naar mijn pipeline: b45881df
Voor de structuur van mijn .gitlab-ci.yml bestand heb ik mijn variabelen en caching bovenaan mijn bestand geplaatst. Daar staan ook mijn standaard image en mijn stages. Dan komen mijn 3 jobs die elk worden uitgevoerd in hun eigen stage. De maven-container-image-generation en run-game jobs maken artifacten aan zodat ze door elkaar gebruikt kunnen worden. De run-game job is ook als service geconfigureerd zodat ze betrouwbaar en schaalbaar is. Dit ging moeizaam, omdat mijn name attribuut fout was. Uiteindelijk heb ik dit kunnen oplossen.
Het enige echte probleem dat ik had tijdens dit labo was de run-game job als service configureren. Mijn name-attribuut bleek fout te zijn, omdat ik het te lang maakte. Uiteindelijk bleek $CI_REGISTRY_IMAGE de enige variabele te zijn die nodig was.
Vraag 1) Het grote voordeel van ./mvnw is dat je zeker bent dat de build dezelfde mavenversie zal gebruiken als de rest van de repository. Bij het gebruik van mvn gebruik je een locale versie, en ben je dus niet zeker dat dit dezelfde zal zijn als in de rest van de repository.
Vraag 2) Het grote verschil zit hem in of het gaat over input of output. Cache's worden gebruikt voor bestanden die moeten gedownload worden, zodat je dan die cache kan gebruiken en de bestanden niet opnieuw moet downloaden. Artifacten worden gebruikt om de output van builds en containers in op te slaan, zodat ze tussen verschillende containers kunnen gebruikt worden. Caches zijn minder betrouwbaar, omdat ze soms nog niet gevuld zijn. Anderzijds zijn artifacten soms heel groot waardoor het uploaden naar GitLab veel tijd kan innemen.
Vraag 3) 25-jdk bevat de 25-jre en nog een heleboel andere tools (zoals debugger, compiler, ...). De pipeline zou dus best de volledigere 25-jdk gebruiken om alle testen betrouwbaar uit te kunnen voeren. De runtime container moet gewoon de code kunnen uitvoeren, want de code zou normaalgezien al door de pipeline moeten gegaan zijn. Als we voor beide de 25-jre zouden gebruiken zou de pipeline zijn werk niet goed kunnen doen (te weinig controle). Als we voor beide de 25-jdk zouden gebruiken zou het uitvoeren van de code zelf niet zo efficiënt gebeuren (dubbele controles).