Skip to end of metadata
Go to start of metadata

オリジナル: Jenkins CLI

Jenkinsは、スクリプトやシェルからアクセスできる組込のCLIクライアントをサポートしています。定型のタスクや、大量のアップデート、トラブルシューティングなどの自動化に役に立ちます。

CLIの取得

Jenkins CLIは jenkins.war の中に、jarファイルとして含まれています。http://yourserver.com/cli からダウンロードすることができます。CLI jarはJenkinsのバージョンに依存していますが、実際には異なるバージョン間でも互換性を保つことができるようになっています。

CLIを動かす

一般的な文法は次の通りです(svnやgitといったツールと似たインタフェースです)。

java -jar jenkins-cli.jar [-s JENKINS_URL] command [options...] [arguments...]

JENKINS_URL は環境変数 $JENKINS_URL でも指定できます。この環境変数は、Jenkinsがビルド中にプロセスをフォークする際に、自動的に設定されます。このため、ビルドの設定でJenkinsのURLを明示しなくても、ビルドの中からでもJenkins CLIを利用することができます。'help' コマンドを使用すると、利用可能なコマンドの一覧を表示します。(Helpの内容は、使用するJenkinsサーバにより違います)

CLIの拡張

PluginをJenkinsにインストールすると、カスタムCLIコマンドを追加することができます。詳細は、writing CLI commands を参照してください。

Credentials(証明書) を使って動かす (1.419 以降)

Jenkinsの利用に認証が求められる場合は、公開鍵認証を設定する必要があります。Web UIからログインし、 http://yourserver.com/me/configure にアクセスして下さい。そして、公開鍵を所定のテキストエリアに入力します。サーバに接続する際には、CLIは、デフォルトで ~/.ssh/identity, ~/.ssh/id_dsa, ~/.ssh/id_rsa を参照します。そして、この情報をサーバに対する認証のために利用します。代わりに、 -i オプションを使って、明示的に秘密鍵の場所を指定することもできます。

もしまだ鍵を所持していないのであれば、SSHの鍵ペアを作成する方法については、こちらのガイドを参照して下さい。

互換性を保つため、 -i オプションを指定した場合を除いて、自分自身の認証に失敗しても、特に致命的なエラーが起きることはありません。認証に失敗した場合は、匿名ユーザとしてのコマンド実行を試みることになります。

Credentials(証明書) を使って動かす (1.419 以前のバージョン)

Jenkinsの利用に認証が求められる場合は、証明書を指定するために、 --username--password 、もしくは --password-file オプションを利用して下さい。コマンドごとにこのオプション指定を設定する手間を省くため、一度 login CLIコマンド(証明書用のパラメータ付き)を使ってログインすれば、その後はその他のコマンドは証明書の指定無しで実行できます。

こういった証明書用のパラメータは、Jenkinsのどの認証タイプでもサポートされるわけでは無い、ということに注意して下さい。バージョン 1.373より以前では、Jenkins自身のデータベースによる認証しかサポートしていません。バージョン 1.373では、LDAP認証がサポートされるようになっています。
もし、CLIが認証用パラメータを「有効でないパラメータ」と判断した場合は、みなさんが使っている認証タイプについてのチケットを提出して下さい。そして、 SecurityRealm から AbstractPasswordBasedSecurityRealm に拡張して、これらのパラメータをサポートしてくれるように依頼をして下さい。

Change History: Note that a security hole in CLI commands was fixed in version 1.371, and that CLI login did not work properly for many commands until 1.375.
(変更履歴: CLIコマンドのセキュリティホールは、バージョン 1.371で修正されました。また、CLI login は、バージョン1.375までは、多くのコマンドに対して正しく動作しないことにご注意下さい。)

  • No labels