Jenkinsめも

カーネルとは関係ないんですが、久々にJenkinsを使おうかなーと考えてるのでめもです。

基本的には以下のことをリモートアクセスAPIでやろうかなと。

  • ジョブの作成(作成というかテンプレートのジョブを作ってそれをコピーする形で)
  • ビルドの実行
  • ビルドの結果確認

ビルドのタイミングは本当はsvnのコミット時にフックでやりたいんだけど諸事情でできなそうな感じもあるのでcronでやるというのも一つの方法。

ジョブの作成/コピーはhttp://Jenkinsサーバ/createItemという形のURLにPOSTでデータを送ればOK。
コピーの場合に必要なデータは以下の3つが必要で作成の場合はnameのみを渡す。

  • name

 ジョブ名

  • mode

 「copy」固定

  • from

 コピー元のジョブ名
 
(´-`).。oO(ジョブ名はURLエンコードする必要アリなので面倒くさいから半角英数字のみでいくのが楽かな

ジョブのコピーはこれでOK。

[masami@saga:~]$ curl -d "name=foobar&mode=copy&from=Template%20Job" http://localhost:8080/createItem

ビルドはスクリプトを実行させれば良いのでビルドの実行方法はシェルにしてジョブ名、ビルド番号を渡せば事足りるかなー

/home/masami/build.sh "${JOB_NAME}" ${BUILD_NUMBER}  

こうすると↓のようになります(コンソールのコピペなので+記号もついてます)。

+ /home/masami/build.sh 'Template Job' 5

jenkinsのシェル変数一覧はhttp://Jenkinsサーバ/env-vars.html/で見れる。

ビルドは単にGETで。Tokenは無くてもいけるけどちゃんとやるなら必要でしょうね。

[masami@saga:~]$ curl http://localhost:8080/job/Template%20Job/build

ビルドの結果はhttp://Jenkinsサーバ/job/ジョブ名/lastSuccessfulBuild/buildNumberでアクセスすると数字だけ返されるのでビルド時の${BUILD_NUMBER}と比較するのが良い?

[masami@saga:~]$ curl http://localhost:8080/job/Template%20Job/lastSuccessfulBuild/buildNumber