JenkinsCLIを使用する方法
業務で過去に使用していたJenkins環境構築手順を調査する必要がありました。
その流れでJobを作成するマクロがあり、その中でSeleniumを使用してJenkins画面を操作して、Jenkins設定の再読み込みをするようにしていました。
しかし、Jenkinsをアップデートしたことで、UIが変わり操作が正常に行えなくなってしまいました。今後もUIが変わる可能性を考えると、GUI操作は毎回修正が必要になると考えました。
この問題に対して、JenkinsCLIを使用するように変更したため、その手順を簡単にですが整理しました。
全体の流れ
- JenkinsCLI画面からjenkins-cli.jarのダウンロード
- ユーザセキュリティ画面からAPIトークンの設定
- JenkinsCLIでコマンドの認証情報を設定してコマンド実行
環境
本記事では、Dockerコンテナ上のJenkinsを使用しています。
- Jenkins: Version 2.555.2
- PC: Windows 11
CLIの準備
JenkinsをCLIで操作するためには、jenkins-cli.jarが必要になります。
Jenkins-cli.jarは、Jenkins CLI画面からダウンロードできます。
- Jenkinsの管理画面にアクセス、Jenkins CLIを選択

- 「jenkins-cli.jar」をクリックしてダウンロード

- 任意のディレクトリにjenkins-cli.jarを配置

CLIの実行(認証失敗)
Jenkins CLI画面の②にある通りに実行してみます。
- ターミナルを開きjenkins-cli.jarのあるディレクトリ移動
(移動しなくてもコマンド実行時にjarファイルのパスを指定してもできます。)

- コマンド実行
java -jar jenkins-cli.jar -s http://localhost:8080/ help
- 結果確認
エラーが出力されました。認証が必要なようです。

認証方法
User API Tokenを使用する方法
- ユーザ管理画面の左メニューからSecurity画面を開く

- トークンの新規追加
APIトークンセクションの「トークン新規追加」ボタンをクリック

- トークンの作成
名前と期限を設定し生成

- 表示されたトークンをコピー
画面にある通りに後からは表示されないためコピーし安全な場所で保管してください。

- Security画面で確認
作成したトークンが一覧に表示されていることを確認

CLIの再実行
APIトークンの追加が完了したので、先ほど失敗したCLIを再実行します。
- コマンドの修正
認証は-authオプションを使用します。認証情報(username:apitoken)を付与します。
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth username:apitoken help
今回の僕の場合
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth admin:11b6cfa89728253f268ad40319eecef548 help
- 実行&結果
成功してヘルプメッセージが表示されました。

失敗する場合
もし失敗してしまう場合は、「Jenkins管理画面」>「System」>「Jenkins URL」の値がコマンドに指定しているURLと合っているか確認してください。
URLが合っている場合は、一度「Save」ボタンをクリックして保存し、再度コマンドを実行してみてください。
実際にJOBの再読み込みをしてみる
今回はbiz-A-jobというJOBの説明をファイルベースで修正して、JenkinsCLIでreload-configurationコマンドを実行して再読み込みしてみたいと思います。
元の値

コンテナからbiz-A-jobのconfig.xmlをコピー
docker cp [コンテナ名]:[config.xmlのパス] [コピー先パス]

config.xmlでdescriptionを編集
業務Aジョブ→Jenkinsおじさんに修正します。

コンテナに配置し直す
docker cp [修正したconfig.xmlパス] [コンテナ名]:[config.xmlのパス]

まだ変わっていない

JenkinsCLIでreload-configurationコマンドで再読み込みを実行します
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth username:apitoken reload-configuration

無事変更が反映されました。
