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.
A można spytać po co rozbijałeś to na trzy osobne pipeliny?
Można, w dokumentacji są też przykłady https://docs.gitlab.com/ee/ci/yaml/index.html#triggerstrategy
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.
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".
-
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ęcrules
są na topie. -
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.