2024年7月26日金曜日

Gitlab CI のジョブを curl から実行する方法

Gitlab CI のジョブを curl から実行する方法

概要

パラメータがある場合などいちいち UI から設定するのが面倒な場合に使えます

環境

  • Gitlab 16.11.5

実行方法

curl -s --request POST "https://your-gitlab-url/api/v4/projects/1/jobs/100/play" \
     --header "Content-Type: application/json" \
     --header "PRIVATE-TOKEN: glpat-xxx" \
     --data @variables.json | jq .

variables.json というファイルにパラメータを設定します

{
  "job_variables_attributes": [
    {
      "key": "TEST_VAR_1",
      "value": "test1"
    },
    {
      "key": "TEST_VAR_2",
      "value": "test2"
    }
  ]
}

ジョブを特定する

ポイントですが manual なジョブしか実行することはできません
自動で流れるジョブは retry などを使います
なので jq や検索などを使って実行可能なジョブを検索しましょう

例えば manual でかつジョブ名が deploy という名前のジョブの id を取得する場合は以下のような感じです

curl -s --globoff --header "PRIVATE-TOKEN: glpat-xxx" "https://your-gitlab-url/api/v4/projects/1/jobs" | jq '.[] | select(.status == "manual" and .name == "deploy").id'

特定のコミットに紐づくジョブを探したい場合は commit.short_id or commit.id を使います

curl -s --globoff --header "PRIVATE-TOKEN: glpat-xxx" "https://your-gitlab-url/api/v4/projects/1/jobs" | jq '.[] | select(.status == "manual" and .commit.short_id == "12345678").id'

すべてのジョブを取得

最新 20 件までしか取得できないので注意しましょう

curl -s --globoff --header "PRIVATE-TOKEN: glpat-xxx" "https://your-gitlab-url/api/v4/projects/1/jobs"

プロジェクトのIDを取得する方法

プロジェクトのページから Settings -> General で確認できます

最後に

変数名など忘れがちなのでその場合に variables.json で管理できるのも楽です

参考サイト

0 件のコメント:

コメントを投稿