コマンドラインからJenkinsのジョブを実行する

コマンドラインからJenkinsのジョブを実行する方法を二つ。

  • wgetでURLにアクセスする
  • Jenkins CLIを使う

wget

ジョブの実行ボタンをクリックしたときのURLにwgetcURL経由でアクセスします。認証をかけている場合にはBasic認証でユーザ名/パスワードを渡します。

$ wget http://yourserver.com/job/<ジョブ>/build?delay=0sec --http-user=<ユーザ名> --http-passwd=<パスワード>

Jenkins CLI

Jenkins CLIは、http://yourserver.com/jnlpJars/jenkins-cli.jarからダウンロードできます。
ジョブを実行する場合には、以下のコマンドを実行します。"-s"オプションでジョブが完了するまで待ちます。URLは環境変数JENKINS_URLで指定することもできます。

java -jar jenkins-cli.jar http://yourserver.com build --username <ユーザー名> --password <パスワード> -s <ジョブ>

上の例では認証情報を引数として渡していますが、明示的にログインコマンドを実行してCredentialを取得することもできます(ユーザのホームにある.hudosnフォルダにcli-redentialsというファイルが作成されます)。

java -jar jenkins-cli.jar http://yourserver.com login --username <ユーザー名> --password <パスワード>
java -jar jenkins-cli.jar http://yourserver.com build -s <ジョブ>
...
java -jar jenkins-cli.jar http://yourserver.com logout

ただし、現状ではActiveDirectoryとCrowdと連携して認証を行っている場合には、Jenkins CLIは正常に動作しないようです(Crowdについては私も確認しました)。詳細は参考にあげたJIRAのチケットを参照してください。

でも、よく考えたらあまり使い道がないかも。人間が実行するならWebから実行する方が簡単ですし、Jenkinsの場合にはcronやタスクから実行するという用途もないです。