Hoe gebruik je GitLab CI om gegevens tussen meerdere buildfasen te bewaren?
sobes.tech AI
Antwoord van AI
Om gegevens tussen de bouwfasen in GitLab CI op te slaan, worden artefacten gebruikt. Dit zijn bestanden of directories die in één fase worden gemaakt en in de volgende beschikbaar zijn.
De configuratie in .gitlab-ci.yml ziet er als volgt uit:
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Buildresultaat" > build_output.txt # Bestand maken
artifacts:
paths: # Welke bestanden/directories moeten worden opgeslagen
- build_output.txt
expire_in: 1 week # Bewaarperiode van artefacten
test_job:
stage: test
script:
- cat build_output.txt # Toegang tot het bestand uit de vorige fase
- npm test
needs: # Afhankelijkheid van de vorige fase aangeven
- build_job
deploy_job:
stage: deploy
script:
- deploy_script.sh
needs:
- test_job
Belangrijke elementen:
artifacts: Bepaalt welke bestanden of directories na het uitvoeren van de fase moeten worden opgeslagen.paths: Lijst van paden naar bestanden of directories die artefacten worden.expire_in: Bepaalt hoe lang de artefacten beschikbaar blijven.needs: Geeft expliciet de afhankelijkheid van de huidige fase ten opzichte van de vorige aan. GitLab CI downloadt automatisch de artefacten van de aangegeven fasen voordat de huidige wordt uitgevoerd.
Zonder needs downloadt GitLab CI artefacten van alle voorgaande fasen in dezelfde of eerdere stadia, wat inefficiënt kan zijn. Het expliciet aangeven van afhankelijkheden met needs controleert nauwkeuriger welke artefacten worden gedownload.
Ook kan cache worden gebruikt om afhankelijkheden op te slaan, zoals geïnstalleerde pakketten, maar dat is bedoeld om herhaalde builds te versnellen, niet om resultaten van de ene fase naar de andere over te dragen. Artefacten zijn het belangrijkste mechanisme om outputgegevens tussen fasen over te dragen.