Perl Hackers Hub

第23回Perlアプリケーションのテストと高速なCI環境構築術(2)

前回の(1)こちらから。

PerlアプリケーションのCI

前回の(1)までで、Perlアプリケーションのテストとその実行に関して基本的な内容を紹介しました。アプリケーション開発にあたっては多くのテストが書かれると思いますが、都度すべてのテストを実行するのは手間がかかりますし忘れてしまうこともあるでしょう。同じことを繰り返すのであればCI環境を作り、テストを自動的/継続的に実行するのが確実です。

Ukigumo::Serverによるテスト実行結果の可視化

Ukigumoはtokuhiromさんが作ったCIを支援するWebアプリケーションです。Ukigumo::Serverはテスト実行結果をPOSTすることで、一覧化してWebブラウザから見ることができるアプリケーションです。

Ukigumo::Serverの導入はcpanmで簡単に行えます。導入と起動は次のように行います。

$ cpanm Ukigumo::Server
$ ukigumo-server
ukigumo-server starts listen on 0:2828

Ukigumo::Serverのインタフェースはとてもシンプルで、テストの実行結果を次のような形でPOSTするだけで、テスト結果をWebページにまとめてくれます図1⁠。

my $ua = LWP::UserAgent->new();
my $res = $ua->post(
    "http://localhost/api/v1/report/add",
    [
        status => 1, # SUCCESS:1, FAIL:2, N/A:3
        project => 'MyProj',
        branch => 'master',
        revision => 3,
        repo => 'git://...',
        body => 'OKXXX',
    ]
);
図1 Ukigumo::Server
図1 Ukigumo::Server

この形式にのっとってPOSTできれば、どのようなクライアントや言語のプロジェクトでもCIを回すことができます。

Ukigumo::Clientによるテスト実行と結果通知

Ukigumo::Clientは専用のコマンドラインツールを備えており、

  • Gitリポジトリの更新
  • proveコマンドの実行
  • 結果の通知

などを実行し、Ukigumo::ServerのAPIを利用する際の定形処理をフォローしてくれます。

Ukigumo::Clientの導入はcpanmで簡単に行えます。

$ cpanm Ukigumo::Client

ukigumo-client.plというコマンドがインストールされるので、次のようにコマンドを実行することで、チェックアウトからUkigumo::ServerへのPOSTまで実行してくれます。

$ ukigumo-client.pl --repo={git_repository} --server_url={ukigumo-server-url} --command="prove -I t/*"

このコマンドをGitのhookとして登録しておくことで、pushされた時点で自動的に実行できます。

これと併せてIkachanを導入するとIRC(InternetRelay Chat)通知まで含めて行ってくれるので、IRCを利用している環境の人はより便利に使えるでしょう。

<続きの(3)こちらです。>

おすすめ記事

記事・ニュース一覧