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]を選択して、インストールします。

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

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


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

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

※シャットダウンの準備で止まってしまったので、OSごとリブートしました。
SCM-ManagerでMercurialリポジトリの公開
テスト用にhgtestというリポジトリを作成しました。
scm-jenkins-pluginをインストールしたことにより、リポジトリの画面に
「Jenkins」タブが追加されます。
認証を行なっていない場合は、UrlとProjectの入力のみでよいようです。
Jenkins側には「jktest」というプロジェクトを作成するつもりなので、
Url:http://(サーバーIP):8080/jenkins/
Project:jktest
と入力しました。
OKを押して、変更を反映させます。

リポジトリへソースをコミット
AntでJUnit 4.10のテストを実行する
ここで作成したプログラムを作成した「hgtest」リポジトリにコミットします。
コミット方法は
SCM-Managerをインストールして、Mercurialのリポジトリを公開する
ここの「EclipseプラグインからのPush」のとおり。
Jenkinsから、hgtestリポジトリのソースを取得してビルドを実行します。
Jenkinsでジョブの作成
Jenkinsで、新規ジョブ作成から「jktest」というフリースタイル・プロジェクトのビルドを作成します。

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
としています。

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

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

自動ビルドの確認
Main.javaを修正し、わざとテストでエラーが発生するようにします。
- //引数2つを加えるだけ
- public static int add(int a, int b) {
- //return a + b;
- //JUnitのテストでエラーになる
- return a * b;
- }
リモートのリポジトリにpushしたと同時に、自動的にビルドが始まりました。
予定通り、ビルドはエラーで終了しています。

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

これ、動いてるところ見てちょっと感動しました。
【参考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
- 関連記事
-
- JavaCC 構文の繰り返し表現
- JavaCCを使用した構文解析プログラムの開発環境を整える
- JenkinsとMercurialを連携する(SCM-Manager使用)
- JenkinsをDebian + Tomcat7にインストールする
- AntでJUnit 4.10のテストを実行する
コメント