Skip to main content

Redmine4.2(5.x)のリマインダーを利用する。

概要

Redmineにはデフォルトでチケットの期日まで何日かメールで通知する機能が備わっています。

これにより、

  • 作成したチケットの処理忘れを防ぐ
  • 定期作業など、開始日が定まっているチケットを事前に把握する

ことが可能になります。

本記事では、この機能を有効化するシェルスクリプトを記します。

環境

以下の環境で動いていることを確認しています。

  • Ubuntu 20.04系Linux
    • Ubuntu22.04でも動くことを確認
  • Redmine 4.2
    • Redmine5.1でも動くことを確認

前提

この作業の前に、以下が必須です。

さっくりとした手順

  1. リマインダースクリプトを作成して実行権限を付与します。
  2. cronで定期実行されるようにします。

リマインダースクリプトの作成

  • スクリプト格納ディレクトリを作成
mkdir /home/hoge/scripts

任意のディレクトリを指定します。

  • スクリプト格納ディレクトリに移動
cd /home/hoge/scripts && pwd

リマインダースクリプトを作成します。

【】内は自分の環境に合わせ、書き換えてからコマンドを実行します。(詳細をコメントで書いています)

cat <<- __EOF__ |  tee -a redmine_reminder_3days.sh
#!/bin/sh

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

cd 【/var/lib/redmine】
# 自分が格納しているRedmineのルートディレクトリ
bundle exec rake redmine:send_reminders days=3 RAILS_ENV=production
# この例では3日前に通知します。days=nの部分を変えることで日数を指定できます
__EOF__

筆者は、

  • 1日前 (redmine_reminder_1day.sh)
  • 3日前 (redmine_reminder_3days.sh)
  • 7日前 (redmine_reminder_7days.sh)
  • 31日前 (redmine_reminder_31days.sh)

の4種類を作成し、それぞれの期日にメールを送付するようにしています。

スクリプトに実行権限を付与し、動作を確認します。

  • 実行権付与
chmod +x redmine_reminder_*day*.sh && ls -l redmine_reminder_*day*.sh

実行権がついていることを確認します

  • 動作確認
sudo -u www-data bash /home/hoge/scripts/redmine_reminder_3days.sh

warningは無視して大丈夫です

締め切りが3日に到来するチケット一覧のメールが受信されれば成功です。

crontab追記

sudo crontab -e -u www-data
  • ※注意事項

初めてこのコマンドを実行した場合、「crontabで用いるエディタは何か」を確認されます。自分の信仰や教義に合わせたエディタを選択してください。

  • 追記例
20 8 * * * /home/hoge/scripts/redmine_reminder_31days.sh
30 8 * * * /home/hoge/scripts/redmine_reminder_1day.sh

30 16 * * * /home/hoge/scripts/redmine_reminder_7days.sh
40 16 * * * /home/hoge/scripts/redmine_reminder_1day.sh

20 20 * * * /home/hoge/scripts/redmine_reminder_3days.sh
30 20 * * * /home/hoge/scripts/redmine_reminder_1day.sh

この例では、

  • 8:20 → 31日前に期日が到来する担当チケット
  • 8:30 → 1日前に期日が到来する担当チケット
  • 16:30 → 7日前に期日が到来する担当チケット
  • 16:40 → 1日前に期日が到来する担当チケット
  • 20:20 → 3日前に期日が到来する担当チケット
  • 20:30 → 1日前に期日が到来する担当チケット

をそれぞれ通知します。

追記確認

  • crontab 追記確認
sudo crontab -l -u www-data

追記した内容があることを確認します。

  • cronログ 設定確認
cat /var/log/cron.log
  • BEGIN EDIT (www-data)
  • REPLACE (www-data)
  • END EDIT (www-data)

が、crontabに追記した時間帯にあれば設定完了です。

後は、指定した時間にメールが通知されることを待ちましょう。(キチッと確認したい場合は、cronの実行時刻を調整してください)