Sobes.tech
Middle

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.