2004/12/14

subversionでの自動ビルド

今日仕事帰りに「Subversion解説書」を何気に立ち読みしてたら これまでずっと調べててわかんなかった自動ビルドの設定法をあっさり発見。
これにのってるって事は当然「Subversionによるバージョン管理」にものってるわけで...
5. リポジトリの管理 > リポジトリの作成と設定 > フックスクリプト に書いたあるやん。普通に。
まあ、やりたいことベースとかCVSからの移行イメージで、とかで 「subversion 自動ビルド」とか「subversion 自動テスト」とか「subversion commitinfo」とか、 そんな検索ワードを使ってたから見つからんかったんやろなぁ。
一通り読み込んでたつもりでまだまだ読めてない部分も多いんでしょう。

で、やり方やけど、リポジトリを作ったらその中にhooksてディレクトリがあるので そこに決められた名前のファイルを作っておけばそいつか実行される。
UNIX系ならまさしくの名前のものを、winなら拡張子は無視して実行ファイルなら 実行してくれるそうなので、けっこうなんでも置けそう。
自動ビルドならantをキックするスクリプトをpost-commitてな名前で追いとけばよさげ。
管理しやすいようにリポジトリディレクトリ内にautobuildという名前でtrunkをチェックアウトして、 そいつを自動ビルドする。てかコミットのたびに自動でテストしてレポートを吐きたかったんだ。
とりあえずwinノートで試したんやけどBSDのblog(じゃぁ無いよな、このメモ) なのでBSDベースでかきます。
まず、そのpost-commitの内容。

#!/bin/sh
cd ../autobuild
PATH = /usr/local/bin
export PATH

svn update
ant -l build.log test
てな感じで書いて、chmod +xすればよし。
そんだけでコミットするたんびに更新してくれる。なんて解りやすい...解っちゃえばこんなもんですな。
こんだけじゃなんなんで、ついでにbuild.xmlの内容なんかも。
<?xml version="1.0" encoding="UTF-8"?>
<project name="triggertest"  default="build"  basedir=".">

 
   <target name="build">
       <javac destdir="bin" debug="true">
             <src>
               <pathelement path="src"/>
             </src>
           <include name="**/*.java"/>
       </javac>
   </target>

 
   <target name="test" depends="build">

       <delete dir="test-result" />
       <mkdir dir="test-result"/>

       <junit>
           <formatter type="xml"/>
           <classpath path="bin"/>
           <batchtest todir="test-result">
               <fileset dir="bin">
                   <include name="**/*Test.class"/>
               </fileset>
           </batchtest>
       </junit>

       <junitreport todir="test-result">
           <fileset dir="test-result"/>
       </junitreport>

   </target>
</project>
こんな感じでした。まる。

0 件のコメント: