Redmine4.2(5.x)のリマインダーを利用する。
概要
Redmineにはデフォルトでチケットの期日まで何日かメールで通知する機能が備わっています。
これにより、
- 作成したチケットの処理忘れを防ぐ
- 定期作業など、開始日が定まっているチケットを事前に把握する
ことが可能になります。
本記事では、この機能を有効化するシェルスクリプトを記します。
環境
以下の環境で動いていることを確認しています。
- Ubuntu 20.04系Linux
- Ubuntu22.04でも動くことを確認
- Redmine 4.2
- Redmine5.1でも動くことを確認
前提
この作業の前に、以下が必須です。
- Redmineでメール通知が有効になっていること
- (Gmailとの連携方法については以下で案内しています)
- https://barrel.reisalin.com/books/redmine/page/redmine425xgmail
- サーバ上でCronログが有効化されていること。
- 必須ではありませんが、運用上ログが有効化されていると心強いです。
さっくりとした手順
- リマインダースクリプトを作成して実行権限を付与します。
- cronで定期実行されるようにします。
リマインダースクリプトの作成
- スクリプト格納ディレクトリを作成
mkdir /home/hoge/scripts
任意のディレクトリを指定します。
- スクリプト格納ディレクトリに移動
cd /home/hoge/scripts && pwd
リマインダースクリプトを作成します。
【】内は自分の環境に合わせ、書き換えてからコマンドを実行します。(詳細をコメントで書いています)
cat <<- __EOF__ | tee -a redmine_reminder.sh
#!/bin/bash
# 引数でルートディレクトリを指定(デフォルトは/home/www-data/redmine)
REDMINE_ROOT=${1:-"/home/www-data/redmine"}
# 引数で日数を指定(デフォルトは3日)
DAYS=${2:-3}
# Redmineのルートディレクトリに移動
cd $REDMINE_ROOT
# リマインダーを送信
bundle exec rake redmine:send_reminders days=$DAYS RAILS_ENV=production
__EOF__
スクリプトに実行権限を付与し、動作を確認します。
- 実行権付与
chmod +x redmine_reminder.sh && ls -l redmine_reminder.sh
実行権がついていることを確認します
- 動作確認
sudo -u www-data bash /home/hoge/scripts/redmine_reminder.sh
warningは無視して大丈夫です
締め切りが3日に到来するチケット一覧のメールが受信されれば成功です。
crontab追記
sudo crontab -e -u www-data
- ※注意事項
初めてこのコマンドを実行した場合、「crontabで用いるエディタは何か」を確認されます。自分の信仰や教義に合わせたエディタを選択してください。
- 追記例
# リマインドしたい日数を引数で指定できます
20 8 * * * /home/hoge/scripts/redmine_reminder.sh 31
30 8 * * * /home/hoge/scripts/redmine_reminder.sh 1
30 16 * * * /home/hoge/scripts/redmine_reminder.sh 7
40 16 * * * /home/hoge/scripts/redmine_reminder.sh 1
20 20 * * * /home/hoge/scripts/redmine_reminder.sh 3
30 20 * * * /home/hoge/scripts/redmine_reminder.sh 1
この例では、
- 8:20 → 31日前に期日が到来する担当チケット
- 8:30 → 1日前に期日が到来する担当チケット
- 16:30 → 7日前に期日が到来する担当チケット
- 16:40 → 1日前に期日が到来する担当チケット
- 20:20 → 3日前に期日が到来する担当チケット
- 20:30 → 1日前に期日が到来する担当チケット
をそれぞれ通知します。
また、このスクリプトでは、
20 8 * * * /home/hoge/scripts/redmine_reminder.sh /home/www-data/redmine2 31
のように、 同一サーバ上に複数のRedmineが動いている場合でも、他のディレクトリを指定可能です。
追記確認
- 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の実行時刻を調整してください)