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.