課題管理システムの勘所(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:というか、ここまで使いこなす人は少ない