Sobes.tech
Middle

Jak używać GitLab CI do przechowywania danych między wieloma etapami budowania?

sobes.tech AI

Odpowiedź od AI

Aby przechowywać dane między etapami budowania w GitLab CI, używane są artefakty. Są to pliki lub katalogi tworzone na jednym etapie i dostępne na kolejnych.

Konfiguracja w .gitlab-ci.yml wygląda tak:

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Wynik budowania" > build_output.txt # Tworzymy plik
  artifacts:
    paths: # Określamy, które pliki/katalogi zapisać
      - build_output.txt
    expire_in: 1 week # Czas przechowywania artefaktów

test_job:
  stage: test
  script:
    - cat build_output.txt # Dostęp do pliku z poprzedniego etapu
    - npm test
  needs: # Określamy zależność od poprzedniego etapu
    - build_job

deploy_job:
  stage: deploy
  script:
    - deploy_script.sh
  needs:
    - test_job

Kluczowe elementy:

  • artifacts: Określa, które pliki lub katalogi mają być zapisane po wykonaniu etapu.
  • paths: Lista ścieżek do plików lub katalogów, które staną się artefaktami.
  • expire_in: Określa, jak długo artefakty będą dostępne.
  • needs: Wyraźnie wskazuje zależność od poprzedniego etapu. GitLab CI automatycznie pobierze artefakty z wymienionych etapów przed wykonaniem bieżącego.

Bez needs, GitLab CI pobierze artefakty ze wszystkich poprzednich etapów w tym samym lub wcześniejszym etapie, co może być nieefektywne. Wyraźne wskazanie zależności za pomocą needs pozwala na bardziej precyzyjną kontrolę, które artefakty są pobierane.

Można także używać cache do przechowywania zależności, np. zainstalowanych pakietów, ale służy to głównie do przyspieszania powtarzalnych buildów, a nie do przekazywania wyników z jednego etapu do drugiego. Artefakty są głównym mechanizmem do przekazywania danych wyjściowych między etapami.