Jenkins CLIを稼働中のJenkinsサーバへSSHログインして操作する方法です。
想定環境
- CentOS7.5以降
- Jenkins 2以降(検証用環境はver. 2.138.1)
- リバースプロキシにApacheを利用
必要なプラグイン
- 特になし
リバースプロキシの設定
こちらの記事 を参考に設定します。
Jenkinsの設定を行う
ポート番号を設定する
「 Jenkinsの管理 」→「 グローバルセキュリティの設定」→「 SSH サーバー 」→「 SSHD ポート 」で 「 ランダム 」 に設定します。

ユーザーに操作権限を与える
「 Jenkinsの管理 」→「 グローバルセキュリティの設定」→「 権限管理 」→「 ログイン済みユーザーに許可 」に設定します。

Jenkins CLI操作用のユーザーを作成する
「 Jenkinsの管理 」→「 ユーザーの管理 」→「 ユーザー作成 」から今回はユーザー「jenkinscli」を作成します。管理者用のアカウントがすでにある場合はこの手順をスキップします。


ペア鍵を作成する
Jenkinsが稼働しているシステムにSSHログインし Jenkins CLIを操作するユーザーと同名のユーザー を作成します。このユーザーの鍵を作成します。
ユーザーを追加するサンプルコード
# rootユーザーで実行する / パスワードが必要な場合はpasswdコマンドで適宜設定する
adduser jenkinscli
su jenkinscli
# jenkinscliユーザーで実行する
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jenkinscli/.ssh/id_rsa):
Created directory '/home/jenkinscli/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jenkinscli/.ssh/id_rsa.
Your public key has been saved in /home/jenkinscli/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vcbYq/bGKtlhGFQNY+nGYiu2UuKUdWuoDBj/JaPDoNo jenkinscli@tk2-243-31223.vs.sakura.ne.jp
The key's randomart image is:
+---[RSA 2048]----+
| .=+ |
| ..... |
| . o |
|. . = +. |
|.o o + BS . |
|+ = B * o+ . |
|.B B B +.o= |
|..O o o o.o. |
|o Eo oo=o |
+----[SHA256]-----+
公開鍵をJenkinsへ登録する
稼働中のJenkinsへ公開鍵を登録します
「 Jenkinsの管理 」→「 ユーザーの管理 」→「 ユーザー名 」→「 設定 」→「 SSH Public Keys 」の順で公開鍵を登録します。



Jenkins CLIを利用する
稼働中のJenkinsへSSHログインしJenkins CLIを利用します
ポートを調べる
SSHを利用してJenkins CLIを利用します。先ほどこの操作用ポートをランダムに選択するように設定しましたので操作用ポート番号を確認します。
# リバースプロクシの設定によって変化する
curl -v http://localhost:8080/jenkins/login 2>&1 | grep SSH-Endpoint| cut -d':' -f3
46321
# リバースプロクシの設定によって変化する
curl -v http://localhost:8080/login 2>&1 | grep SSH-Endpoint| cut -d':' -f3
46321
Jenkins CLIを実行する
以下のコマンドでJenkins CLIのhelp画面を表示します
# jenkinscli操作用のユーザーで実行します
# ポート番号はランダムに変更されますので環境に合わせて下さい
su jenkinscli
ssh -l jenkinscli -p 46321 localhost help
add-job-to-view
Adds jobs to view.
build
ジョブをビルドします。オプションで完了するまで待ちます。
cancel-quiet-down
"quiet-down"コマンドの処理をキャンセルします。
clear-queue
ビルドキューをクリアします。
connect-node
ノードと再接続します。
console
ビルドのコンソール出力を取得します。
copy-job
ジョブをコピーします。
create-credentials-by-xml
Create Credential by XML
create-credentials-domain-by-xml
Create Credentials Domain by XML
create-job
標準入力をConfig XMLとして読み込み、ジョブを新規に作成します。
create-node
標準入力をConfig XMLとして読み込み、ノードを新規に作成します。
create-view
Creates a new view by reading stdin as a XML configuration.
delete-builds
ビルドを削除します。
delete-credentials
Delete a Credential
delete-credentials-domain
Delete a Credentials Domain
delete-job
ジョブを削除します。
delete-node
ノードを削除します。
delete-view
Deletes view(s).
disable-job
ジョブを無効化します。
disconnect-node
ノードとの接続を切断します。
enable-job
ジョブを有効化します。
enable-plugin
Enables one or more installed plugins transitively.
get-credentials-as-xml
Get a Credentials as XML (secrets redacted)
get-credentials-domain-as-xml
Get a Credentials Domain as XML
get-job
ジョブ定義XMLを標準出力に出力します。
get-node
ノード定義XMLを標準出力に出力します。
get-view
Dumps the view definition XML to stdout.
groovy
指定したGroovyスクリプトを実行します。
groovysh
対話式のGroovyシェルを起動します。
help
利用可能なコマンドの一覧を表示します。
import-credentials-as-xml
Import credentials as XML. The output of "list-credentials-as-xml" can be used as input here as is, the only needed change is to set the actual Secrets which are redacted in the output.
install-plugin
ファイル、URLおよびアップデートセンターからプラグインをインストールします。
install-tool
ツールの自動インストールを実行し、インストール先を表示します。
keep-build
ビルドを保存するようにマークします。
list-changes
指定したビルドの変更履歴を表示します。
list-credentials
Lists the Credentials in a specific Store
list-credentials-as-xml
Export credentials as XML. The output of this command can be used as input for "import-credentials-as-xml" as is, the only needed change is to set the actual Secrets which are redacted in the output.
list-credentials-context-resolvers
List Credentials Context Resolvers
list-credentials-providers
List Credentials Providers
list-jobs
指定したビューかItem Groupのすべてのジョブを一覧表示します。
list-plugins
インストール済みのプラグインを一覧表示します。
login
認証情報を保存して、認証情報なしにコマンドを実行できるようにします。
logout
loginコマンドで保存した認証情報を削除します。
mail
標準入力の内容をメールとして送信します。
offline-node
"online-node"コマンドが実行されるまで、ビルドを実行するノードの使用を一時的に停止します。
online-node
直前に実行した"online-node"コマンドを取り消し、ビルドを実行するノードの使用を再開します。
quiet-down
Jenkinsは再起動に向けて終了処理を実施中です。ビルドを開始しないでください。
reload-configuration
メモリにあるすべてのデータを破棄して、ファイルから再ロードします。設定ファイルを直接修正した場合に役に立ちます。
reload-job
Reload job(s)
remove-job-from-view
Removes jobs from view.
restart
Jenkinsを再起動します。
safe-restart
Jenkinsを安全に再起動します。
safe-shutdown
Jenkinsを終了モードに変更しビルドが完了後に、シャットダウンします。
session-id
Jenkinsの再起動ごとに変化するセッションIDを出力します。
set-build-description
ビルドの説明を設定します。
set-build-display-name
ビルドの名称を設定します。
set-build-parameter
現在実行中のビルドのビルドパラメータを設定、更新します。
set-build-result
現在のビルドの結果を設定します。ビルド中に呼び出された場合のみ動作します。
shutdown
Jenkinsサーバーを直ちにシャットダウンします。
update-credentials-by-xml
Update Credentials by XML
update-credentials-domain-by-xml
Update Credentials Domain by XML
update-job
標準入力からの情報でジョブ定義XMLを更新します。get-jobコマンドの正反対のことを行います。
update-node
標準入力からの情報でノード定義XMLを更新します。get-nodeコマンドの正反対のことを行います。
update-view
Updates the view definition XML from stdin. The opposite of the get-view command.
version
バージョンを表示します。
wait-node-offline
ノードがオフラインになるのを待ちます。
wait-node-online
ノードがオンラインになるのを待ちます。
who-am-i
認証情報を表示します。