無料ユーザーも使える!GitLab 18.10 新機能「CI/CD Job Inputs」でパイプラインをもっと柔軟に
はじめに
2026年3月19日にリリースされた GitLab 18.10 には、フリープランのユーザーでも今日からすぐ使える便利な新機能が含まれています。
その中でも特に注目したいのが 「Use Runtime Inputs with CI/CD Jobs(ジョブへのランタイム入力)」 です。
「CI/CDパイプラインをもっと柔軟に使いたい」「環境ごとに同じYAMLを書き直すのが面倒」と感じたことはありませんか?この機能を使えば、そのモヤモヤがスッキリ解消されます。
対象プラン
| プラン | 利用可否 |
|---|---|
| Free | 使えます |
| Premium | 使えます |
| Ultimate | 使えます |
GitLab.com / GitLab Self-Managed / GitLab Dedicated すべてで利用可能です。
なお、GitLab Runner 18.9 以降 が必要です。
「CI/CD Job Inputs」とは?
一言でいうと、ジョブが受け付ける入力パラメータを明示的に定義できる仕組み です。通常のパイプライン実行ではデフォルト値で自動的に動作し、手動実行・再試行のときだけ値を上書きできます。
これまでも CI/CD 変数(Variables)を使って動的な設定はできましたが、変数にはいくつかの使いにくさがありました。
- 変数のオーバーライドの優先順位が複雑でわかりにくい
- 型の制約がないため、想定外の値が入ってもすぐには気づけない
- 「このジョブはどんな値を受け付けるか」が明示的でない
Job Inputs はこれらの課題をまとめて解決してくれます。
CI/CD Variables との比較
| 項目 | CI/CD Variables | Job Inputs |
|---|---|---|
| 型の検証 | なし | あり(string / number / boolean / array) |
| デフォルト値 | 任意 | 必須 |
| 許容値の制限 | できない |
options で指定可能 |
| 正規表現バリデーション | できない |
regex で指定可能 |
| 再実行時の値変更 | できない | できる |
| スコープ | パイプライン全体 | そのジョブのみ |
基本的な使い方
定義方法
ジョブ定義に inputs: キーワードを追加し、各入力に default を必ず設定します。
値の参照には ${{ job.inputs.INPUT_NAME }} という構文を使います。
deploy_job:
inputs:
target_env:
default: staging
options: [staging, production]
replicas:
type: number
default: 3
debug_mode:
type: boolean
default: false
script:
- echo "Deploying to ${{ job.inputs.target_env }}"
- echo "Replicas: ${{ job.inputs.replicas }}"
- if [ "${{ job.inputs.debug_mode }}" == "true" ]; then set -x; fi
- ./deploy.sh
入力の設定項目
| キーワード | 必須 | 説明 |
|---|---|---|
default |
必須 | デフォルト値。必ず設定する |
type |
任意 |
string(デフォルト)/ number / boolean / array
|
description |
任意 | 入力の説明文(UIに表示される) |
options |
任意 | 許容する値のリスト |
regex |
任意 | 入力値を検証する正規表現 |
実用的なサンプル集
デプロイジョブ
本番環境への誤デプロイを防ぎつつ、柔軟な運用を実現できます。
deploy:
when: manual
inputs:
target_env:
default: staging
description: デプロイ先の環境
options: [staging, production]
version:
default: latest
description: デプロイするアプリのバージョン
script:
- echo "Deploying ${{ job.inputs.version }} to ${{ job.inputs.target_env }}"
- ./deploy.sh --env ${{ job.inputs.target_env }} --version ${{ job.inputs.version }}
テストジョブ(バリデーション付き)
テストスイートや並列数を実行時に指定できます。
integration_tests:
inputs:
test_suite:
default: smoke
description: 実行するテストスイート
options: [smoke, regression, full]
parallel_jobs:
type: number
default: 5
description: 並列実行数
enable_debug:
type: boolean
default: false
description: デバッグログを有効にする
tags:
type: array
default: ["critical"]
description: 実行するテストタグ
script:
- if [ "${{ job.inputs.enable_debug }}" == "true" ]; then export DEBUG=1; fi
- ./run_tests.sh
--suite ${{ job.inputs.test_suite }}
--parallel ${{ job.inputs.parallel_jobs }}
--tags '${{ job.inputs.tags }}'
DBマイグレーション(安全チェック付き)
dry_run フラグと regex バリデーションを組み合わせた安全な設計です。
migrate_database:
when: manual
inputs:
target_db:
default: development
description: 対象データベース環境
options: [development, staging, production]
migration_name:
default: ""
description: 実行するマイグレーション名(空白で全件)
regex: ^[a-zA-Z0-9_]*$
dry_run:
type: boolean
default: true
description: ドライランモード(変更を適用しない)
script:
- echo "Running migrations on ${{ job.inputs.target_db }}"
- |
if [ "${{ job.inputs.dry_run }}" == "true" ]; then
echo "DRY RUN MODE - no changes will be applied"
MIGRATION_FLAGS="--dry-run"
fi
- |
if [ -n "${{ job.inputs.migration_name }}" ]; then
./migrate.sh $MIGRATION_FLAGS --migration ${{ job.inputs.migration_name }}
else
./migrate.sh $MIGRATION_FLAGS --all
fi
GUIからの操作方法
手動ジョブを入力値付きで実行する
- パイプラインまたはジョブ一覧を開く
- 手動ジョブの名前をクリック(「実行」ボタンではなく)
- 表示されたフォームに入力値を指定
- 「Run job」を選択
異なる入力値でジョブを再試行する
- ジョブ詳細ページを開く
- 「Retry job with modified values」を選択
- 前回の値がプリフィルされているので、変更したい箇所だけ修正
- 「Run job again」を選択
APIからの操作方法
手動ジョブの実行:
curl --request POST \
--header "PRIVATE-TOKEN: <your_token>" \
--header "Content-Type: application/json" \
--data '{
"job_inputs": {
"environment": "staging",
"version": "v2.1.0"
}
}' \
"https://gitlab.example.com/api/v4/projects/1/jobs/456/play"
ジョブの再試行:
curl --request POST \
--header "PRIVATE-TOKEN: <your_token>" \
--header "Content-Type: application/json" \
--data '{
"job_inputs": {
"environment": "production",
"replicas": 10
}
}' \
"https://gitlab.example.com/api/v4/projects/1/jobs/123/retry"
使える場所・使えない場所
使える場所
${{ job.inputs.INPUT_NAME }} が使えるジョブキーワードは以下の通りです。
-
script/before_script/after_script artifactscacheimageservices
使えない場所
パイプライン作成時に評価される設定には使えません。
- ジョブ名
stagerulesinclude
これらを動的に設定したい場合は、CI/CD pipeline configuration inputs(spec:inputs: / $[[ inputs.* ]])を使いましょう。
よくあるエラーと対処法
input must have a default value
すべての Job Input には default が必須です。
# NG
my_job:
inputs:
target_env:
options: [staging, production]
# OK
my_job:
inputs:
target_env:
default: staging
options: [staging, production]
unexpected value(バリデーションエラー)
-
optionsを使っている場合:値が完全一致(大文字小文字も区別)しているか確認 -
regexを使っている場合:パターンが入力値にマッチするか確認 -
type: numberの場合:数値以外の文字列が渡されていないか確認 -
type: arrayの場合:API経由ではJSON配列形式(["a", "b"])で渡す必要あり
まとめ
GitLab 18.10 の Job Inputs は、フリープランを含む全ユーザーが今すぐ使える実践的な新機能です。
- 型安全な入力定義でヒューマンエラーを防げる
-
optionsやregexで許容値を絞り込める - 再試行のたびに値を変更でき、デバッグや再デプロイが楽になる
- Runner 18.9 以降さえあれば追加コスト不要
「パイプラインを環境ごとに何個も書いている」「手動ジョブの設定変更のたびにYAMLを編集している」という方は、ぜひ Job Inputs に切り替えてみてください。GitLab をもっと使いこなすための、小さくて確実な一歩になるはずです。