JenkinsとMercurialを連携する(SCM-Manager使用)

Mercurialのリポジトリにコミットしたら、Jenkinsに通知。
自動的にビルドとテストを実行してくれる環境を作ってみます。


前提条件



環境はDebian上に構築します。
Mercurialのリポジトリは、SCM-Managerで公開しますのでインストールしておきます。
SCM-Managerをインストールして、Mercurialのリポジトリを公開する
Jenkinsもインストールしておきます。
JenkinsをDebian + Tomcat7にインストールする




プラグインのインストール



SCM-Manager、Jenkinsにそれぞれプラグインをインストールします。

SCM-Managerは、scm-jenkins-pluginというそのものずばりのプラグインがあるので、
左側の[Config]-[Plugins]を選択して、インストールします。
102_01.png



続いてJenkinsは、Mercurial Pluginをインストールします。
[Jenkinsの管理]-[プラグインの管理]を選択します。
102_02.png


利用可能タブを選択して、Mercurial Pluginを探し、チェックを付けます。
チェックをつけたら、「ダウンロードして再起動後にインストール」をクリック。
102_03.png

102_04.png


しばらく待っていると、プラグインのダウンロードが完了します。
102_05.png

[Jenkinsの管理]-[シャットダウンの準備]を実行します。
シャットダウンできる状態になったら、Tomcatを再起動します。
102_06.png

※シャットダウンの準備で止まってしまったので、OSごとリブートしました。





SCM-ManagerでMercurialリポジトリの公開



テスト用にhgtestというリポジトリを作成しました。
scm-jenkins-pluginをインストールしたことにより、リポジトリの画面に
「Jenkins」タブが追加されます。

認証を行なっていない場合は、UrlとProjectの入力のみでよいようです。
Jenkins側には「jktest」というプロジェクトを作成するつもりなので、

Url:http://(サーバーIP):8080/jenkins/
Project:jktest


と入力しました。

OKを押して、変更を反映させます。

102_07.png






リポジトリへソースをコミット



AntでJUnit 4.10のテストを実行する
ここで作成したプログラムを作成した「hgtest」リポジトリにコミットします。

コミット方法は
SCM-Managerをインストールして、Mercurialのリポジトリを公開する
ここの「EclipseプラグインからのPush」のとおり。


Jenkinsから、hgtestリポジトリのソースを取得してビルドを実行します。






Jenkinsでジョブの作成



Jenkinsで、新規ジョブ作成から「jktest」というフリースタイル・プロジェクトのビルドを作成します。
102_08.png

Mercurial Pluginをインストールしたことにより、
「ソースコード管理システム」で「Mercurial」が選択できるようになっています。

Repository URLの指定ですが、

http://(サーバーIP):8080/scm/hg/hgtest


のように指定すると、認証エラーになってしまいます。


Jenkins Mercurial Pluginでbitbucketにアクセスする
こちらを参考に、

http://(ユーザー名):(パスワード)@(サーバーIP):8080/scm/hg/hgtest


という形式で入力すると、認証を通過出来ました。


今回は、

http://scmadmin:scmadmin@(サーバーIP):8080/scm/hg/hgtest


としています。
102_09.png


ビルドの項目では、Antの呼び出しを選択し、実行したいターゲット(今回はdist)を入力します。
設定が終わったら、保存をクリック。
102_10.png


「ビルドの実行」をクリックすると、リポジトリからのソースの取得が始まります。
ワークスペースをみると、狙い通りソースの取得とビルドが行われていました。
102_11.png





自動ビルドの確認



Main.javaを修正し、わざとテストでエラーが発生するようにします。

  1. //引数2つを加えるだけ
  2. public static int add(int a, int b) {
  3.     //return a + b;
  4.     //JUnitのテストでエラーになる
  5.     return a * b;
  6. }




リモートのリポジトリにpushしたと同時に、自動的にビルドが始まりました。
予定通り、ビルドはエラーで終了しています。
102_12.png


テストを通過するように修正して、再度push。
また自動的にビルドが始まります。
102_13.png



これ、動いてるところ見てちょっと感動しました。



【参考URL】

scm-jenkins-plugin
https://bitbucket.org/sdorra/scm-jenkins-plugin

Mercurial Plugin
https://wiki.jenkins-ci.org/display/JENKINS/Mercurial+Plugin

Jenkins Mercurial Pluginでbitbucketにアクセスする
http://kenichiro22.hatenablog.com/entry/20110415/1302838728
関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ