This shows you the differences between two versions of the page.
ja:install:hook [2010/10/11 11:08] |
ja:install:hook [2021/06/08 13:49] (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/ に配置する方法でもメール送信を行なうことができます。 |