Ich habe mehrere Jobs, die mit einer einzelnen externen Ressource (Server) arbeiten. Der erste Job stellt die App in der Umgebung bereit, der zweite führt Tests in dieser Umgebung aus, der dritte führt Integrationstests in dieser Umgebung aus.
Ich weiß, dass es eine Ressourcengruppenoption gibt . Es werden jedoch nur Jobs gesperrt. Wenn zwei Pipelines gleichzeitig laufen muß ich ausführen job1
, job2
, job3
von der ersten Pipeline und nur dann , wenn die ersten Pipeline - Release Ressource - die zweite Pipeline starten kann jobs1-3
. Gibt es einen Weg, dies zu erreichen? Es sind weitere Jobs in der Pipeline - sie sollten gleichzeitig funktionieren.
Ich denke , es kann durch die umgesetzt werden
needs
undresource_group
Schlüsselwörter und der Gitlab API.Jeder Job erhält die Pipeline-ID, zu der er gehört
predefined-variable
. Wenn Sie die gitlab-API verwenden, können Sie den Status anderer Jobs in der Pipeline anzeigen. Wenn Sie diesen Statusneeds
undresource_group
Schlüsselwörter verwenden können, können Sie meiner Meinung nach das erreichen, was Sie beabsichtigt haben. Weitere Informationen finden Sie in der Beschreibung des folgenden Codes und seinen Kommentaren.(Ich habe es nicht selbst getestet, daher muss diese Methode überprüft werden.)
Referenzen:
quelle
traffic_light
Job richtig verstanden habe, sollte ich warten, bis die Ausführung von Job1-3 in der gleichzeitigen Pipeline beendet ist. Was mir an diesem Ansatz nicht gefällt - Ihre CI-Minuten werden für die Überprüfung des Status der gleichzeitigen Pipeline verschwendet.traffic_light
Verwendung vontags
Schlüsselwörtern verwenden. Viele Cloud-Anbieter bieten heutzutage kostenlose Tier-Instanzen an, die ausreichen, um einfache Wartejobs wie ztraffic_light
.