Je souhaite exécuter un travail spécifique dans un pipeline, je pensais avoir attribué une balise pour le travail, puis spécifier cette balise à nouveau dans la méthode postale remplira mes besoins. Le problème est lorsque je déclenche à l'aide de l'API (POST), tous les emplois Dans le pipeline est déclenché un événement, mais seulement un de ces marqués.
gitlab-ci.yml:
job1: Script: - ECHO "HELLOWORLD!" Tags: [mytag]
job2: Script: - Echo "Bonjour gitlab!"
l'appel de l'API: CURL -X POST -F TOKEN = "XXX" -F ref = "myTag" https://gitlab.com/api/v4/projects/12345678/déclencheur/pipeline
Les changements probablement dans Gitlab apportent probablement des réponses ci-dessus ne fonctionnent pas. Le
only:
variables:
- $variables[....]
syntaxe Trigger Ci Deth.
Pour les autres qui viennent ici comme moi, voici comment je déclenche un travail spécifique:
job1:
script:
- echo "HELLO for job1"
- "curl
--request POST
--form token=$CI_JOB_TOKEN
--form ref=master
--form variables[TRIGGER_JOB]=job2
https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/trigger/pipeline"
except:
- pipelines
job2:
script: echo "HELLO for job2"
only:
variables:
- $TRIGGER_JOB == "job2"
except - pipelines
Dans Job1, sinon, vous allez dans une boucle de pipeline infinie enfant!En utilisant des variables, vous pouvez faire:
Utilisez cette commande CURL pour déclencher le pipeline avec une variable
curl --request POST --form token=${TOKEN} --form ref=master --form "variables[TRIGERRED_JOB]=job1" "https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/trigger/pipeline"
Bien sûr, vous devez définir la variable en conséquence.
Définissez vos travaux avec la variable appropriée:
job1:
script: echo "HELLO for job1"
only:
variables:
- $variables[TRIGERRED_JOB] == "JOB1"
job2:
script: echo "HELLO for job2"
only:
variables:
- $variables[TRIGERRED_JOB] == "JOB2"
si vous exécutez la boucle de l'intérieur d'un autre/même travail, vous pouvez utiliser $ {CI_JOB_Token} au lieu de $ Token et
https://docs.gitlab.com/ee/ci/triggers/#making-Utilisation-frigger-variables
ajoutez une variable à votre appel de l'API de déclenchement, comme indiqué ici:
https://docs.gitlab.com/ee/ci/triggers/#making-Utilisation-frigger-variables
ensuite, utilisez le only
prendy à l'intérieur de votre gitlab.yml
Fichier comme indiqué ici:
https://docs.gitlab.com/ee/ci/variables/#environment-variables-expressions
alors uniquement si la variable existe, le travail sera exécuté
par exemple
job1:
script: echo "HELLO"
only:
variables:
- $variables[API_CALL]=true