Lab 1 Report
link CI/CD job
Verslag .gitlab-ci.yml
Probleem 1
De eerste opdracht waar we geen stap voor stap instructies kregen was "Automate container image generation". Hier wist ik helemaal niet hoe ik moest beginnen dus heb ik naar ai gegrepen. Hierdoor verkreeg ik code die niet nodig was voor deze opdracht, zoals:
maven-container-image-generation:
...
image: docker
services:
- docker-dind
variables:
DOCKER_TLS_CERTDIR: "/certs"
...
Ik heb de nieuwe code verwijderd en heb de opdracht aandachtig heroverlopen. Daarbij heb ik enkel de code toegevoegd die gevraagd werd en zo een werkend resultaat bekomen.
Probleem 2
Bij de opdracht erna ("automate running a game") heb ik over verschillende commits gezocht naar het probleem in mijn code. Uiteindelijk heb ik gevonden dat een docker path geen hoofdletters mag bevatten. Daarom heb ik in deze code
services:
- name: $CI_REGISTRY/$CI_PROJECT_PATH/logic-service:latest
alias: logic-service
"$CI_PROJECT_PATH" (wat gelijk is aan "Viktor/devops-project") vervangen door een hard gecodeerd pad:
services:
- name: $CI_REGISTRY/viktor/devops-project/logic-service:latest
alias: logic-service
Oplossingen bijkomende vragen
Vraag 1
./mvnw is een maven wrapper, hierdoor hoef je maven niet lokaal te downloaden.
Vraag 2
cache vs artifacts
- Een cache is beschikbaar tussen verschillende pipelines, terwijl een artifact enkel beschikbaar is in de pipeline waarin die is aangemaakt.
- Cache is lokaal bewaard en artifacts worden op de gitlab-server bewaard.
- Cache kan op elk moment worden opgeruimd door de gitlab runner. Artifacts worden verwijderd na de aangegeven periode bij "expire_in.
cache voor de maven dependencies
Dependencies veranderen zelden en zijn groot. Door cache te gebruiken moeten ze niet in elke pipeline opnieuw gedownload worden.
artifact voor de buildfiles
De buildfiles zijn specifiek bedoeld voor 1 pipeline en worden gebruikt in latere jobs. Cache kan verouderen, door artifacts te gebruiken garanderen we dat de juiste buildresultaten worden doorgegeven.
Vraag 3
- 25-jdk bevat alle ontwikkeltools en debuggingtools, en wordt gebruikt tijdens de CI/CD-buildfase om de code te compileren.
- 25-jre bevat enkel de runtime en wordt gebruikt om de reeds gecompileerde applicatie uit te voeren in de runtimecontainer.