HudsonにGIT pluginを入れてgitリポジトリに対応させてみた。

全プロジェクトに共通の下準備

GIT plugin自体はWeb UIからインストールできる。

http://ci.example.com:8080/pluginManager/

gitリポジトリはSSHでアクセスすることが多いので、hudsonのSSH鍵を用意して おく。

ci% sudo -u hudson ssh-keygen

プロジェクトごとの設定

リポジトリがgitosis経由で提供されている場合、hudsonがfetchできるように、 hudsonの公開鍵をgitosisに登録する。

gitosis% sudo $EDITOR gitosis-admin/gitosis.conf
[group foo-builders]
readonly foo
members = hudson
gitosis% cat > keydir/hudson.pub
gitosis% git push

プロジェクトの設定でリポジトリの種類にgitを指定して、URLを指定する。

ssh://gitosis@example.com/foo.git

CIとリポジトリが別ホストなので、フックとかがんばらずにpollingで動かすこ とに。

WebUIからビルドを実行すると、cloneまでは成功して、ワークスペースができる はず(コンソール出力を確認)。

ただ、GIT pluginはビルド前にタグを打ったりしたがるので、アイデンティティ 不明というエラーが出る。それを回避するためにワークスペースでuser.nameと user.emailを設定する(公式ページ参照)。

ci% su
ci# cd /var/lib/hudson/jobs/foo/workspace
ci# git config user.name "Hudson"
ci# git config user.email "hudson@example.com"
ci# exit
ci%

だいたいこんな感じ。

資料