課題管理システムの勘所(2)
http://d.hatena.ne.jp/daisuke-m/20091202/1259769481 の続き。
さて、今回はJIRAにおけるJellyの使い方。技術屋としてこっちを書きたかったので、↑のは前振りだw 前述の「最終ログインから一定期間以上経過している人にアラートメールを送る」という機能をJIRAでどのように実現するのか。まず要件をまとめよう。
ログインアラート仕様
- 最終ログインからA日経過したら、アラートメールを送信する。
- 最終ログインからB日経過したら、1時間おきに何度もアラートメールを送信し続ける。
という極悪仕様である。
Jellyの有効化
さて、JIRAではJellyスクリプトを走らせる事ができる、という話だったが、実はデフォルトではこの機能はOFFになっている。誰しもが使う機能ではない*1上に、任意のコードが実行できる訳なので、セキュリティ上のリスクがある為だ。管理メニューからJelly Runnerを選ぶと、デフォルトではこう。
これを有効化しなければならない。まぁ、システムプロパティ "jira.jelly.on" を true に設定して起動するだけなのだが。JAVA_OPTSに "-Djira.jelly.on=true" を追加してやればよい。そうすると、こうなる。
参考 http://confluence.atlassian.com/display/JIRA/Setting+properties+and+options+on+startup
さて、これでJellyを走らせることができる。ただ、気軽に試せる例がないのが問題だ。スクリプトのイメージは参考URLにて。
参考 http://confluence.atlassian.com/display/JIRA/Jelly+Examples
Jelly Email Taglibの追加
さて、Jellyからemailの送信ロジックを叩かなければならない。JavaMail APIを叩いても良いのだが、JellyにはEmailのライブラリがあるので、それをDLして、JIRAから参照できるクラスパスに入れておく。
http://commons.apache.org/jelly/libs/email/
まぁ、JIRAをビルドする際、edit-webapp/WEB-INF/lib フォルダに commons-jelly-tags-email-1.0.jar ファイルを放り込んで war を作ってデプロイする。ここはJIRAのインストール経験があれば問題ないでしょう。
ここで Jelly Runner からメールが飛ばせるかどうかチェックしておこう。
<JiraJelly xmlns:jira="jelly:com.atlassian.jira.jelly.enterprise.JiraTagLib" xmlns:core="jelly:core" xmlns:email="jelly:email"> <email:email server="localhost" from="jira@jiemamy.org" to="daisuke@jiemamy.org" subject="JIRA Jelly Test" message="Jellyからメールが飛ばせるかどうかテストだぴょん。"/> </JiraJelly>
これをsubmitすると、メールが飛んでくるハズ。fromとtoは適宜書き換えて下さい。俺のメールボックスをテストだぴょんで埋めるのは勘弁である。
さて、今日はここまで。次回、その極悪スクリプトをご紹介します。
*1:というか、ここまで使いこなす人は少ない