カテゴリー別アーカイブ: CI

Hudson Growl Pluginでビルド結果をGrowlへ通知

Hudsonのビルド結果をGrowlに通知するプラグインGrowl Pluginを試してみたよ。

HudsonGrowl

Hudson Growl pluginのインストール

  1. Hudsonの管理>>プラグインの管理>>利用可能タブを選択
  2. Hudson Growl pluginを探してチェックを入れる
    (利用可能タブに見つからない場合はインストール済みタブを確認してみる。)
  3. 最下部の「インストール」ボタンを押す
  4. インストールが完了したら「ジョブが実行でなければ再起動」ボタンを押してHudsonを再起動
  5. 再起動したらHudsonの管理>>プラグインの管理>>インストール済みタブでHudson Growl pluginが有効化されていることを確認

Hudson側の設定

システム設定

Hudsonの管理>システムの設定>Global Growl Settingsにパスワードを入力して保存する。ここでは仮にpasswordと入力する。
Growl側で既にパスワード設定している場合はそのパスワードを入力すること(Growl側のパスワード設定については後述)。

Global Growl Setting
「失敗したときと回復したときだけ通知」する場合は「Only Growl on Failure or Recovery?」にチェック。

プロジェクトの設定

各プロジェクトの設定でビルド後の処理に「Growl」が追加されてるのでチェックを入れ、通知するマシンのIPアドレスを入力する。
私の場合、VirtualBoxのゲストOSでhudsonを実行していて、ホストOSがMac OSX(Growlの通知先)なので、192.168.56.1と入力したよ。

Hudson Growl IP Setting


「高度な設定」を押すと「失敗したときと回復したときだけ通知」するかどうかを選べるよ。

Growl側の設定

MacのGrowl1.2.1の場合で説明するよ。

  1. Growlのアイコンをクリックして「Open Growl Preferences…」を選択するかMacの「システム環境設定」→「その他」→「Growl」を選択
  2. 「ネットワーク」を選択して、「受信される通知を聞く」にチェック、「リモートアプリケーション登録を許可」にチェック。
    サーバパスワードにパスワードpasswordを入れる。このパスワードはHudson側のシステム設定で入力したパスワードだよ。
    既にGrowl側にパスワードが設定されている人は、そのパスワードをHudson側のシステム設定で指定してね。

Growl Network Setting

通知の確認

ビルド実行してみる。初めて実行したときはキーチェーンがアクセスを許可するか聞いてくるので、「許可」あるいは「常に許可」
GrowlKeyChain

以下のようにプロジェクト名、ステータス、ビルド番号、URLが通知される。
GrowlNotify

通知スタイルを個別に設定したい場合は、Growlの設定で「アプリケーション」を選択すると「Growler」というのがリストにいると思うので、これを選んで設定を押すと編集できるよ。
Growler
重要なプロジェクトの場合他の通知に紛れて見逃さないように、目立つ通知方法にするといいかもよ。sticky notificationにするとかね。
Hudsonの失敗ビルドのRSSをSafariにブックマークしてGrowlSafari(GrowlをダウンロードするとExtraに入ってる)で通知とかやってたんだけど、こっちの方がSafariの他の通知と切り分けられるのでいいね。

Google ChromeのHudson監視拡張機能

Hudsonの状況をモニターするGoogle Chromeの拡張機能(Extension)を試してみたよ。

Hudson ExtensionHudson Monitorというのをインストールして設定してみた。
どちらもアイコンでステータスがわかるようになっている。
設定オプションとアイコンをクリックしたときの表示が微妙に異なる。一長一短あるが、これくらいのシンプルさがよいと思う。

Hudson Extension

  • アイコンにOK,Failを表示
  • HudsonサーバーURL表示
  • ジョブへのリンクとステータス表示
  • 更新時間表示
  • ユーザー権限には対応していない
  • 更新間隔は1~100分までを数値指定

Hudson Monitor

  • アイコンにビルド状況の色を表示
  • ジョブへのリンクとステータス表示
  • ユーザー権限に対応(ユーザ名、パスワードを設定に入力)
  • 表示順をジョブの名前あるいはステータスでソート可能
  • 更新間隔は5分~60分の5分おきの値をプルダウンで指定

Hudsonにノードを追加してビルドをさせてみる

Hudsonではノードマシンをどんどん追加して、専用環境でのビルドや、分散ビルドによる高速化などができる。
今回はある特定の環境でビルドしなければならない事態を想定して、スレーブとなるビルドマシンを追加して、マスターのノードから指示を出し、新しく追加したスレーブのマシンでビルド実行するところまでやってみるよ。

ノードの追加

Hudsonの管理→ノードの管理→新規ノードの作成

ノード名を入力→ラジオボタンでダムスレーブを選択(はじめてノードを追加するときはこれしか選べない)→「OK」

同時ビルド数: 1 ←今回は分散でなく専用ビルドなので1にする
リモートFSルート: /var/lib/hudson/jobs ←ビルドを実行するスレーブ側の作業ディレクトリ
ラベル: hoge
用途: このマシーンを特定ジョブ専用にする
起動方法: SSH経由でUnixマシンのスレーブエージェントを起動
[高度な設定]

  • ホスト: slave01
  • ユーザー名: hudson ←スレーブ側のマシンslave01であらかじめ作っておいたhudson用ユーザー
  • パスワード: ********
  • 秘密鍵:
  • ポート: 22
  • JVMオプション:

可用性: 可能な限りオンラインのままにする。

ノードプロパティ
□環境変数
□ツールパス

保存

これで設定間違えてなければ、早速ビルドマシンにつながるよ。
うまくいかないときはログを参照して原因を調べてみてね。

ジョブの作成

□実行するノードを制限 にチェックを入れて
ラベル式に「hoge」と入力

上のノードの設定ででてきたラベルはここで使うのだね。

あとはレポジトリ、ビルドコマンドや、テストなども適宜入力して保存

ジョブの実行

きちんとつながってさえいればあとは通常のビルド実行と同じ。どうみても書くの飽きてきて面倒くさくなってるのバレバレだね。

あとは応用で、マシンを追加して並行してビルド実行させるとかすれば、きっとおかし食べながらネットサーフィンする時間が短くなって悲しくなるよ。仕事早く終わって、次の仕事がどんどんやってくるよ!よかったね!

Gitコミット時にHudson自動ビルド

debianにhudsonをインストールしたのでgitと連携させるよ。とりあえずgitコミット時に自動ビルドすることにしたよ。

Hudson GIT pluginのインストール

  1. Hudsonの管理>>プラグインの管理>>利用可能タブを選択
  2. Hudson GIT pluginを探してチェックを入れる
    (利用可能タブに見つからない場合はインストール済みタブを確認してみる。)
  3. 最下部の「インストール」ボタンを押す
  4. インストールが完了したら「ジョブが実行でなければ再起動」ボタンを押してHudsonを再起動
  5. 再起動したらHudsonの管理>>プラグインの管理>>インストール済みタブでHudson GIT pluginが有効化されていることを確認

Gitコミット時にHudsonによる自動ビルドを行うための設定

Hudson側

ジョブの作成(設定)

■ ソースコード管理システム

Gitを選択し、URL of Repositoryを入力する。
ローカルファイルシステムの場合file://はつけなくてもOK.

■ ビルド・トリガ

Hudsonの管理>システムの設定>セキュリティを有効化 していない場合は設定不要
セキュリティを有効化している場合は次のようにして認証トークンを設定する

  1. 「リモートからビルド(例:スクリプトから)」を選択
  2. 認証トークン(任意の文字列)を入力 以下では仮にtokenstringとする

Gitレポジトリ側

hostnameはhudsonの稼動しているホスト名、
jobnameは上で作成したHudsonのジョブ名 とする。

Hudsonにてセキュリティを有効化していない場合

.git/hooks/post-commit に

wget -O /dev/null "http://hostname:8080/job/jobname/build?delay=3sec"

を追加して保存。
もともと書かれている:Nothngは実質何もしないので気になる人はコメントアウトするか削除すればよい。

delayパラメータ: コミット後、ビルドまでの待機時間。上の例はコミット後3秒待ってビルド開始する。

※post-commitを実行可能形式にするのを忘れないこと。

chmod +x post-commit
Hudsonにてセキュリティを有効化している場合

.git/hooks/post-commitに

wget "http://hostname:8080/job/jobname/build?delay=3sec&token=tokenstring&cause=gitcommit"

を追加して保存。

tokenパラメータ: Hudsonのジョブの設定で指定した認証トークン
causeパラメータ: ビルド要因。ここではgitのcommitをトリガとするのでそれがわかるような文字列 gitcommitとした。

gitコミット時にwgetの出力を表示したくない場合は次のように書く(失敗時にはechoでメッセージ表示)

wget -q -O /dev/null "http://hostname:8080/job/jobname/build?delay=3sec&token=tokenstring&cause=gitcommit" || echo "hudson build job failed."

自動ビルドの実行

以上の設定が終了したらgit commitを行うと自動的にジョブで作成したビルド処理が実行される。
うまく行かない場合は、ジョブのコンソール出力を確認してみる。

結局

wgetでビルドのURLを直接叩いてるだけ。
ということは、このコマンドをcrontabに書いて「定期実行は俺に任せろー!」\やめて!/
定期実行はHudson側のスケジュールで設定するといいよ。