web-dev-qa-db-fra.com

Comment déclencher un travail spécifique dans Gitlab

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

7
Kiblawi_Rabee

Les changements probablement dans Gitlab apportent probablement des réponses ci-dessus ne fonctionnent pas. Le

only:
  variables:
    - $variables[....]

syntaxe Trigger Ci Deth.

enter image description here

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"

Notez le except - pipelines Dans Job1, sinon, vous allez dans une boucle de pipeline infinie enfant!

trigger a specific job

5
GuilleW

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

4
Arash

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
3
Naor Tedgi