Mam wiele zadań pracujących z jednym zasobem zewnętrznym (serwerem). Pierwsze zadanie polega na wdrożeniu aplikacji w środowisku, drugie wykonanie testów w tym środowisku, trzecie wykonanie testów integracyjnych w tym środowisku.
Wiem, że istnieje opcja grupy zasobów . Ale blokuje tylko zadania. Jeśli dwa rurociągi uruchomić równocześnie muszę wykonać job1
, job2
, job3
od pierwszego rurociągu i tylko wtedy pierwszego zasobu uwalnianiu rurociąg - drugi rurociąg można uruchomić jobs1-3
. Czy istnieje sposób na osiągnięcie tego? W przygotowaniu są inne zadania - powinny one działać jednocześnie.
Myślę, że może być realizowany przez
needs
iresource_group
słów kluczowych i API gitlab.Każde zadanie otrzymuje identyfikator potoku, do którego należy jako
predefined-variable
. Jeśli używasz interfejsu gitlab, możesz zobaczyć status innych zadań w potoku. Jeśli możesz użyć tego statusuneeds
iresource_group
słów kluczowych, myślę, że możesz osiągnąć to, co zamierzałeś. Zobacz opis poniższego kodu i jego komentarze, aby uzyskać więcej informacji.(Nie testowałem tego sam, więc ta metoda wymaga przeglądu.)
Referencje:
źródło
traffic_light
zadaniu, powinienem poczekać na zakończenie wykonywania zadania 1-3 w równoległym potoku. Czego nie lubię w tym podejściu - twoje minuty ci zostaną zmarnowane na sprawdzanie statusu współbieżnego potoku.traffic_light
użyciemtags
słowa kluczowego. Obecnie wielu dostawców usług w chmurze udostępnia bezpłatne wystąpienia warstw, które wystarczają do wykonywania prostych zadań oczekiwania, takich jaktraffic_light
.