Differences

This shows you the differences between two versions of the page.

ja:install:hook [2010/10/11 20:08] (current)
Line 1: Line 1:
 +====== hook機能について ======
 +===== 概要 =====
 +
 +hook機能は、チケットの登録・返信完了時に外部プログラムを呼び出す機能です。 hookとして、外部プログラムを設定すると、チケット登録・返信完了時に外部プログラムを実行させることが可能になります。 また、hookの呼び出しインターフェースが外部プログラムを呼び出す形式であるため、サーバ上の実行可能ファイルであれば、言語は問いません。 アイデアとしては、以下のようなことが実現できます。
 +
 +==== メール通知 ====
 +
 +登録された内容を、メーリングリストへメール送信するようスクリプトをhookに登録する。
 +
 +==== 登録ログ保存 ====
 +
 +登録された内容を、ファイルに保存するようスクリプトをhookに登録する。
 +
 +==== メッセンジャー通知 ====
 +
 +登録された内容を、メッセンジャーに自動投稿するスクリプトをhookに登録する。
 +
 +==== 再ビルド ====
 +
 +登録された内容から、プロジェクトのソースを自動ビルドするスクリプトをhookに登録する。
 +
 +アイデア次第では、面白いことができるかもしれません。通常のインストールを行なうと、メール送信用の perl スクリプトのサンプルがscriptディレクトリに配置されます。(メール送信を行なうには、設定が必要です。)
 +
 +===== hook機能の仕様 =====
 +
 +Starbug1は、サーバ上でチケットの登録・返信完了時に以下の動作を行ないます。
 +${Starbug1のインストールディレクトリ}/scriptディレクトリ内にある、hook_ で始まるファイル名の実行ファイルを検索します。実行ファイルが見付かった場合、送信内容をjson形式に変換し、環境変数${STARBUG1_CONTENT}に設定した状態で、実行ファイルを実行します。実行ファイルが複数存在した場合は、順に実行ファイルを実行します。
 +チケット登録・返信完了のメッセージと一緒に、スクリプトの実行結果を表示します。
 +hook機能に登録された外部スクリプトでエラーが発生した場合は、「登録が完了しました。」のメッセージの後に、スクリプトの実行が失敗した旨のメッセージが表示されます。
 +
 +環境変数${STARBUG1_CONTENT}に設定されるjsonは以下のような形式になります。(ただし、見易いように整形してあります。) 各言語のjsonとオブジェクトの変換ライブラリで変換すれば、簡単に投稿内容を取得できます。
 +<code javascript>
 +{
 +  project: { name: "テストサンプル プロジェクト"},
 +  ticket: {
 +    id: 2,
 +    url: "http://popnuts.ddo.jp/starbug1/index.cgi/ticket/2",
 +    fields: [
 +      { name: "件名",    value: "誰でも投稿できるようになっていた件について" },
 +      { name: "投稿者",  value: "smeghead" },
 +      { name: "状態",    value: "受付済" },
 +      { name: "カテゴリ", value: "画面 " },
 +      { name: "優先度",  value: "高" },
 +      { name: "詳細",    value: "テスト詳細2" },
 +      { name: "再現手順", value: "テスト再現手順2" },
 +      { name: "コメント", value: "" }
 +    ]
 +  }
 +}
 +</code>
 +     
 +===== 添付のメール送信スクリプトの設定方法 =====
 +
 +=== perlモジュールのインストール ===
 +
 +添付のサンプルメール送信スクリプトは、HTTP::Dateと、JSON:Syckを利用しています。あらかじめ、cpanなどでインストールしておいてください。(JSON:Syckは、YAML:Syckに含まれています)
 +
 +=== メール送信スクリプトの設定 ===
 +
 +添付のメール送信スクリプトの設定には、多少perlの知識が必要となります。
 +Starbug1に添付されているメール送信スクリプトの設定方法を説明します。 ${Starbug1のインストールディレクトリ}/scriptディレクトリに、sample.hook_sendmail.pl が存在します。 以下のコマンドで、メール送信スクリプトをhook_で始まるファイル名に変更します。
 +
 +<code sh>
 +# cd ${Starbug1のインストールディレクトリ}/script
 +# mv sample.hook_sendmail.pl hook_sendmail.pl
 +</code>
 +
 +スクリプトの一行目を、perlのpathに変更します。
 +
 +<code sh>
 +#!/usr/local/bin/perl
 +</code>
 +     
 +メール送信のための情報を設定します。$options というhashに対して設定を行ないます。 赤文字の部分がカスタマイズ部分です。
 +<code perl>
 +my $options = {
 +  #使用するSMTPホスト名
 +  smtp_host => 'localhost',
 +  #使用するSMTPポート番号
 +  smtp_port => 25,
 +  #送信するメールのFROMを指定してください。
 +  from => 'project-admin@example.com',
 +  #メールの送信先を指定してください。通知したいメーリングリストのアドレスなど。
 +  to => 'project-ml@example.com'
 +};
 +</code>
 +
 +設定後、シンタックスエラーが無いかをチェックします。cオプションを指定して実行してください。
 +
 +<code>
 +# perl -c hook_sendmail.pl
 +</code>
 +     
 +注意: ここで、モジュールが見付からないというエラーが発生した場合は、不足しているライブラリをインストールしてください。
 +以上の設定を行なった後、チケットの登録・返信を行なって、動作確認を行なってください。
 +
 +===== hookスクリプトの注意点 =====
 +
 +ただし、さくらインターネットなどレンタルサーバでは外部プログラムの実行が制限されている場合があります。その場合、starbug1のソースのmodule/hook_mail にあるメール送信を行なう共有ライブラリを作成し、$(インストールディレクトリ)/script/ に配置する方法でもメール送信を行なうことができます。