2010年1月4日月曜日

Continuum/Maven/Subversion/Windows

Continuous Integration のお試し環境構築レシピ。

ソース管理、ビルド管理、CI(Continuous Integeration)サーバの間の最低限の疎通確認を、できるだけ少ない手順でやってみる。

■ 使ったもの
・ ソース管理:Subversion 1.6.6 [download]
・ ビルド管理:Maven 2.2.1 [download]
・ CI サーバ:Continuum 1.3.4 (Beta) [download]
(ベータだけど気にしない)
・ SMTP サーバ:Radish というのを見つけた [URL]
好き使えるSMTPサーバとか、なんちゃってスクリプトとかあったらそれでも可。

■ 各プロダクトの準備
コマンドプロンプトは Win XP 上の Cygwin を使用

◆ ソース管理
  • Subversion が無かったらインストールしておく。
  • 適当なディレクトリに SVN リポジトリを作る。ここでは c:\devel\tmp\repo とした
    $ svnadmin create c:/devel/tmp/repo

◆ ビルド管理
  • Maven2 が無かったら インストールしておく。

◆ SMTP サーバ
  • Radish をダウンロードしたら適当なところに展開して実行。
  • メニューの[設定]/[STMP/POP3サーバ設定ダイアログ]から、ドメイン名に ci_test.net を指定。
  • メニューの[設定]/[ユーザ]で、ユーザ ci_tester(パスワード:no)を追加
ci_test.netci_tester は任意でも可

◆ CI サーバ
  • 無かったら適当にインストール
  • jetty.xml中、MailSessionReference の設定を以下のように編集
    <Set name="user">ci_tester</Set>


■ Continuum からビルド
  • 適当なディレクトリで、プロジェクト作成
    $ mvn archetype:create \
    > -DgroupId=net.yasuabe.studies.ci \
    > -DartifactId=continuum-test \
    > -DarchetypeArtifactId=maven-archetype-quickstart
    mvn package と叩けばビルドできることが確認できる。

  • pom.xml に以下を追記(dependency の後あたり)
    <scm>
    <connection>
    scm:svn:file:///C:/devel/tmp/repo/continuum-test
    </connection>
    </scm>
  • Subversion にimport する
    $ svn import file:///c:/devel/tmp/repo -m "initial import"
  • Continuum に登録
    • "Add Project"/"Maven 2.0x Project"
    • "Upload POM" でpom.xml を指定して[Add]
  • ユーザを追加
    • "Administration"/"Users"から[Create New User]
    • "User Name"=ci_tester Email Address = ci_tester@ci_test.netで[Create User]
    • ロール等、適当にチェック(continuum-testのProject Administratorなど)
    • Project Group Summary の MembersタブでUsersの表に表示されていることを確認
  • Notifiers を追加
    • "Notifiers"/[Add]
    • Type=Mail でSubmit
    • "Mail Recipient Address"=ci_tester@ci_test.net "Send on Failure"にチェックして[Save]
  • Continuum からビルド
    • "Continuum"/"Show Project Groups"
    • "continuum-test"
    • "Member Projects"/"continuum-test"
    • [Build Now] ボタン押下
  • 確認
    • Builds タブに成功行が追加され
    • Working Copy にソースがチェックアウトされていることを確認

■ ビルド失敗の通知確認
  • AppTest.java の既存テストメソッドを編集してコミット
    public void testApp() {
    assertTrue(false);
    }
  • Continuum で再び [Build Now]
  • "continuum-test" プロジェクトの Builds タブで失敗行が追加されていることを確認
  • Radish の MAILBOX にメールが入っていることを確認
  • メールを開くと、どのテストが失敗したかなど詳細情報が載ってる


以上、CIサーバと Maven、Subversion を連携させて、失敗時にメールを送るところまでできた。

後の作業は以下のような感じだろうか。
  • Continuum のメニュー上の他の設定オプションを試す。
  • Continuum の他の構成を試す。デフォルトはデータベース=Derby、APサーバ=Jetty。
  • 他の環境で試す(現場は Linux 多いかも)。
  • Trac との連携

0 件のコメント:

コメントを投稿