Integrity思い出しメモ
Integrity | Continuous Integration server
ちょっと調べた範囲で git + Ruby 以外のアプリをどうやってテストするのかをメモ。
git 以外に対応できるか?
lib/integrity/repository.rb
に
def checkout
run "git clone #{@uri} #{directory}", false unless cloned?
run "git fetch origin"
run "git checkout origin/#{@branch}"
run "git reset --hard #{@commit}"
end
って書いてあるので、例えばこれを git-svn を使うように書き換えちゃえば svn には対応できるような気がする。同じ感じで他の scm にも対応できるんじゃないかなぁ。
それか git-svn で mirror する仕組みを用意しておいて、mirror した git repository に対して git fetch; git checkout するようにした方がいいのかな? 本体をいじっちゃうと後々面倒がありそうだし。
テストの実行と結果の取得
lib/integrity/project.rb
module Integrity
class Project
include DataMapper::Resource
include Notifiers
property :id, Serial
property :name, String, :required => true
property :permalink, String
property :uri, URI, :required => true, :length => 255
property :branch, String, :required => true, :default => "master"
property :command, String, :required => true, :length => 255, :default => "rake"
property :public, Boolean, :default => true
この :defaule => "rake" がくさいので、たぶん :command を置き換えればいいんじゃないか。
Integrity.configure do |c|
c.builder.project.command COMMAND
end
って感じになるのかな? あるいは rake を使ってないなら rake っていう sh script を用意するのもアリかも。個人的には rake 使ってない環境はないので無理だけど。
とりあえず FAQ に以下のように書いてあるので
But does it work with <insert tech here>?
Absolutely! As long as your build process can be run from an UNIX-y environment and that it returns a zero status code for success and non-zero for failure, then Integrity works for you.
exit status さえ返せばどうにかなるんだと思う。
というかそうか、Rakefile 置いて :default タスクでテスト走らせればいいだけか。そっちの方が楽かも。
これで Ruby と git は必要だけど Ruby 以外のアプリ、git 以外の scm でもなんとか使えそうかな? SimpleTest を使っているプロジェクトは SimpleTestをCIへ活かす のようにすればなんとかなるような気がする。まだ試してないけど。