web-dev-qa-db-ja.com

Gitlabで特定のジョブをトリガする方法

私はPipelineで特定のジョブを実行したい、ジョブのタグを割り当て、次にPOSTメソッドでこのタグを再度指定してから、必要なニーズを満たします。問題は、API(POST)、すべてのジョブを使用してトリガーしたときです。パイプラインでは、このタグ付きの1つだけが発生しますがイベントが発生します。

gitlab-ci.yml:

jOB1:スクリプト: - エコー "HelloWorld!"タグ:[mytag]

jOB2:スクリプト: - エコー「こんにちはgitlab!」


aPI呼び出し:curl -x POST "token =" xxx "-f ref =" mytag " https://gitlab.com/api/v4/projects/12345678 /トリガー/パイプライン

7
Kiblawi_Rabee

Gitlabの変更はおそらく上記の答えを上回っていません。 NS

_only:
  variables:
    - $variables[....]
_

構文トリガCI Lint。

enter image description here

私のようにここに来る他の人のために、私が特定の仕事を誘発する方法です:

_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"
_

✓JAS1で_except - pipelines_を注意してください。

trigger a specific job

5
GuilleW

変数を使用することによって、できることができます。

このcurlコマンドを使用して、可変でパイプラインをトリガーします。

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"
 _

OFCOURSEはそれに応じて変数を設定する必要があります。

適切な変数でジョブを定義します。

job1:
  script: echo "HELLO for job1"
  only:
    variables:
      - $variables[TRIGERRED_JOB] == "JOB1"

job2:
  script: echo "HELLO for job2"
  only:
    variables:
      - $variables[TRIGERRED_JOB] == "JOB2"
 _

cURLを他のものの内側から/同じジョブから実行している場合は、$ TOKENの代わりに$ {CI_JOB_TOKEN}を使用できます。

https://docs.gitlab.com/ee/ci/triggers/#making-use-of-trigger-variables

4
Arash

ここに示すように、トリガーAPI呼び出しに変数を追加します。

https://docs.gitlab.com/ee/ci/triggers/#making-use-of-trigger-variables

次に、ここに示すように、_gitlab.yml_ファイル内のonly prpertyを使用します。

https://docs.gitlab.com/ee/ci/variables/#EnviRonment-variables-Expressions

その後変数が存在する場合のみジョブが実行されます

例えば

_job1:
  script: echo "HELLO"
  only:
    variables:
      - $variables[API_CALL]=true
_
3
Naor Tedgi