J'ai plusieurs emplois travaillant avec une seule ressource externe (serveur). Le premier travail déploie l'application dans l'environnement, le deuxième exécute des tests dans cet environnement, le troisième exécute des tests d'intégration dans cet environnement.
Je sais qu'il existe une option de groupe de ressources . Mais cela ne verrouille que les emplois. Si deux pipelines fonctionnent en même temps que je dois exécuter job1
, job2
, job3
de la première canalisation et que lorsque la première ressource de libération de pipeline - le deuxième pipeline peut lancer jobs1-3
. Existe-t-il un moyen d'y parvenir? Il y a d'autres emplois dans le pipeline - ils devraient travailler simultanément.
Je pense qu'il peut être mis en œuvre à travers les
needs
etresource_group
mots - clés et l'API gitlab ce.Chaque travail reçoit l'ID de pipeline auquel il appartient en tant que
predefined-variable
. Si vous utilisez l'api gitlab, vous pouvez voir l'état des autres tâches dans le pipeline. Si vous pouvez utiliser ce statutneeds
et cesresource_group
mots clés, je pense que vous pouvez réaliser ce que vous vouliez. Voir la description du code ci-dessous et ses commentaires pour plus de détails.(Je ne l'ai pas testé moi-même, cette méthode doit donc être revue.)
Références:
la source
traffic_light
travail, je devrais attendre la fin de l'exécution du travail 1-3 dans le pipeline simultané. Ce que je n'aime pas dans cette approche - vos minutes ci seront gaspillées pour vérifier l'état du pipeline simultané.traffic_light
utiliser letags
mot-clé. De nombreux fournisseurs de cloud proposent aujourd'hui des instances de niveau gratuit, qui sont suffisantes pour exécuter des tâches d'attente simples commetraffic_light
.