Jenkins CLI必須コマンド:ジョブ管理と制御のための実践ガイド

create-job、copy-job、delete-job、build、get-job、update-jobの例を使って、Jenkins CLIでジョブを管理する方法を解説します。

Jenkins CLI必須コマンド:ジョブ管理と制御のための実践ガイド

Jenkins CLIは、Web UIが反復作業には遅すぎる場合に、ジョブを管理するのに役立ちます。テンプレートからジョブを作成したり、ビルドをトリガーしたり、スクリプト内でXML設定を更新したりする必要がある場合、CLIは直接的な手段を提供します。

このガイドでは、ジョブ管理コマンドに焦点を当てます:list-jobsget-jobcreate-jobcopy-jobupdate-jobdelete-jobbuild

Jenkins CLIのセットアップ

コマンドを実行する前に、Jenkinsマスターへの安全な接続を確立する必要があります。これには、CLIクライアントのダウンロードと適切な認証の確保が含まれます。

1. jenkins-cli.jarのダウンロード

CLIクライアントは通常、Jenkinsサーバー上の特定のエンドポイントにあります。wgetまたはcurlを使用してダウンロードできます:

wget http://your-jenkins-url:8080/jnlpJars/jenkins-cli.jar
# またはcurlを使用
curl -O http://your-jenkins-url:8080/jnlpJars/jenkins-cli.jar

2. 認証方法

Jenkins CLI接続には認証が必要です。最も安全で推奨される方法は、プレーンユーザーパスワードの代わりにAPIトークンを使用することです。

APIトークンを生成するには、Jenkins Web UIでユーザー設定 > 設定 > APIトークンに移動します。

以降のすべてのコマンドでは、通常-s(サーバーURL)と-auth(認証情報)フラグを使用して認証フラグが必要です:

java -jar jenkins-cli.jar -s http://your-jenkins-url:8080 -auth USERNAME:API_TOKEN <command>

ヒント: セキュリティのため、APIトークンをスクリプトに直接入力するのではなく、安全な環境変数に保存するか、設定されている場合はSSHキー認証方法を使用してください。

ジョブ発見のための基本コマンド

ジョブを変更する前に、既存のジョブを一覧表示し、その設定を取得することがしばしば必要です。

全ジョブの一覧表示:list-jobs

このコマンドは、Jenkinsマスターに設定されているすべてのジョブの名前を表示します。

java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH list-jobs

ジョブ設定の取得:get-job

JenkinsジョブはXML設定ファイルで定義されます。get-jobコマンドを使用すると、このXML定義を取得できます。これは、テンプレートに基づいて新しいジョブを作成するために不可欠です。

# 'my-template-job'の設定を取得し、ファイルに保存
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH get-job my-template-job > template-config.xml

必須のジョブ管理コマンド

これらのコマンドは、Jenkinsジョブの基本的なライフサイクル操作を処理します。

1. 新しいジョブの作成:create-job

create-jobコマンドには、新しいジョブの名前と、そのパラメータ、ビルド手順、トリガーを定義するXML設定ファイルが必要です。

前提条件: まず、有効なXML設定ファイル(例:new-config.xml)が必要です。これは通常、get-jobを使用して取得したテンプレートを変更して作成します。

# 例:ローカルのXMLファイルを使用して'project-feature-branch'という新しいジョブを作成
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH create-job project-feature-branch < new-config.xml

2. 既存のジョブのコピー:copy-job

これは新しいジョブを作成する最も速い方法であり、既存のジョブをテンプレートとして使用し、新しい名前を適用します。このコマンドは、ソースジョブの設定を効果的に複製します。

# 構文:copy-job SOURCE_JOB_NAME DESTINATION_JOB_NAME
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH copy-job original-pipeline new-dev-pipeline

3. ジョブの有効化と無効化:enable-jobおよびdisable-job

これらのコマンドは、メンテナンス、一時停止、または管理制御のために重要であり、ビルドのトリガーを防止または許可します。

# メンテナンスのためにスケジュールまたはトリガーされたビルドを停止するコマンド
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH disable-job legacy-project-build

# ジョブを再活性化するコマンド
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH enable-job legacy-project-build

4. ジョブの削除:delete-job

このコマンドは、ビルド履歴と設定を含め、Jenkinsインスタンスからジョブを完全に削除します。このコマンドは注意して使用してください。

# ジョブの完全な削除
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH delete-job obsolete-test-job

警告: delete-jobコマンドは、CLI環境でさらなる確認なしに即座に実行されます。このコマンドを実行する前に、スクリプトに適切な検証手順を含めてください。

ビルドのトリガーと監視

設定管理以外にも、CLIは特に特定のパラメータが必要なビルドをトリガーするためによく使用されます。

ビルドのトリガー:build

buildコマンドは、指定されたジョブの新しいビルドを開始します。ジョブがパラメータ化されている場合は、-pフラグを使用して直接引数を渡すことができます。

# 単純なパラメータなしのビルドをトリガー
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH build nightly-deploy

# パラメータ化されたジョブをトリガーし、パラメータを渡す
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH build integration-test -p TARGET_ENV=staging -p BRANCH_NAME=hotfix-123

注: build-sフラグを使用すると、CLIはビルドが完了するのを待ち、終了ステータスを報告します。それ以外の場合、コマンドはビルドをキューに入れた後すぐに戻ります。

ビルドステータスの表示:get-jobおよびconsole

CLIはWeb UIに匹敵するリアルタイムストリーミングを提供しませんが、ジョブステータスを確認し、コンソール出力を取得できます。

特定のビルド番号のコンソール出力を表示するには:

# 'my-job'のビルド#55のコンソール出力を取得
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH console my-job 55

CLIスクリプティングのベストプラクティス

Jenkins CLIを効率的に活用するには、安定性とセキュリティのために特定のベストプラクティスを採用する必要があります:

1. スクリプティングと自動化

CLIはシェルスクリプトで最も役立ちます。get-jobを使用し、結果のXMLを慎重に変更し、変更した設定をcreate-jobまたはupdate-jobでフィードバックします。

ワークフローの例(コピー、変更、作成):

  1. テンプレートを取得:get-job template-job > tmp.xml
  2. sedを使用して、tmp.xml内のプレースホルダー(例:プロジェクト名、リポジトリURL)を置き換えます。
  3. 新しいジョブを作成:create-job new-job < tmp.xml

2. 設定更新の処理

標準入力からXMLを使用して既存のジョブの設定を更新するには、update-jobを使用します。これは、ビルド履歴を保持するため、ジョブを削除して再作成するよりも安全です。

# ローカルで変更した設定ファイルを使用して'project-a'を更新
java -jar jenkins-cli.jar -s $JENKINS_URL -auth $AUTH update-job project-a < updated-config.xml

3. エラーハンドリング

スクリプト内でCLIコマンドを実行した後は、常に終了コード($?)を確認してください。リターンコード0は成功を示し、ゼロ以外のコードはエラーを示します。これは、堅牢な自動化とデバッグに不可欠です。

重要なポイント

Jenkins CLIは、反復可能なジョブ管理のための実用的なツールです。get-jobでジョブXMLをエクスポートし、制御された変更を加え、update-jobでジョブを更新し、buildでビルドをトリガーすることから始めてください。APIトークンをスクリプトに含めず、delete-jobのような破壊的なコマンドを実行する前に検証してください。