Jak zablokować pipeline?

0

Witam
Czy jest w Gitlabie możliwość lokowania całego pileline w taki sposób by runner wykonał wszystkie kroki z danego pipeline i dopiero zabrał się za kolejny. Potrzebuję to ponieważ mam rozbite kroki stawiania środowiska testowego, sam krok testów i krok zwijania środowiska testowego. Dochodzi do sytuacji gdzie włącza się kro stawiania środowiska w pipeline pierwszym potem w drugim krok zwijania środowiska a potem z pierwszego uruchamiają się testy. Dochodzi wtedy do sytuacji gdzie testy próbują się uruchomiś na nieistniejącym środowisku.

2

A można spytać po co rozbijałeś to na trzy osobne pipeliny?

1

Można, w dokumentacji są też przykłady https://docs.gitlab.com/ee/ci/yaml/index.html#triggerstrategy

0

Ponieważ to jest jedna odnoga tego pipeline. Mam kilka środowisk i tylko na środowisko dev chcę stawiać w reszcie środowisk nie potrzebuję tego a testy są parametryzowane i mogą uderzać do wielu środowisk.

0
Masteratom napisał(a):

Ponieważ to jest jedna odnoga tego pipeline. Mam kilka środowisk i tylko na środowisko dev chcę stawiać w reszcie środowisk nie potrzebuję tego a testy są parametryzowane i mogą uderzać do wielu środowisk.

Typowy X/Y. Chciałeś skipnąć stage stawiania i składania, dla niektórych środowisko (co trzeba było zrobić conditional stage'ami), wpadłeś na pomysł że rozbijesz to na osobne pipe-line'y (co było złym pomysłem), znlalazłeś z tym problem, i teraz pytasz o Twoje potencjalne rozwiązanie, zamiast faktyczny problem.

To co mówił @KamilAdam jest poprawne - nie powinieneś tego rozbijać na osobne pipeline'y - powinieneś mieć jeden.

Jeśli nie chcesz uruchamiać jakiegoś stage'a dla danego środowiska, to GitLab ma coś takiego jak except i only, można tego użyć zeby ominąć jakiś stage, tutaj jest przykład: https://stackoverflow.com/questions/39988497/how-can-you-execute-gitlab-stages-conditionally

Polecam też google "gitlab conditional job stage".

1
  1. Zgodnie z CI/CD "only and except are not being actively developed. rules is the preferred keyword to control when to add jobs to pipelines.", więc rules są na topie.

  2. Nie rozumiem co to znaczy kilka "pipelineów". Możesz doprecyzować? Na każdym branchu masz osobnego .gitlab-ci.yml ? Bo jeśli nie to raczej masz jeden pipeline, w ramach którego, pewne rzeczy wykonywane są sekwencyjnie (stages), a inne mogą być wykonywane równolegle w ramach stage'a (jeśli są runnery), a jeszcze inne warunkowo (np. w oparciu o taga)

Może po prostu potrzebujesz zadeklarować dependencies w jobach tego samego stage, tak, żeby "jobA" wykonał się przed "jobB"?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.