私は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 /トリガー/パイプライン
Gitlabの変更はおそらく上記の答えを上回っていません。 NS
_only:
variables:
- $variables[....]
_
構文トリガCI Lint。
私のようにここに来る他の人のために、私が特定の仕事を誘発する方法です:
_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
_を注意してください。変数を使用することによって、できることができます。
この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
ここに示すように、トリガー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
_