Gitlab のアクセスが妙にもっさりしているなーと思って調べていたら、どうも 各プロジェクトの Services の Emails on push 設定周りでエラーになっているということが判明した。
Gitlab の表示が遅い!って思ったのでチューニングを試みた
他の人の push 通知を知らせてもらいたく、どうやればその通知って来るんだろうと試しに設定してみていたのですが、どうやらそれがエラーを引き起こしていたようです。
思い返してみたら、確かに Test 送信をボタンで行った時はメールが届いたのですが、push をしてもメールが来ていなかった。数日前に設定したのですが、通知が来ないことに気づいていなかったなんて・・・
とりあえず、Gitlab で push の通知をメールで受け取るようにするため、このエラーを解決することにした。
Gitlab で push の通知をメールで受け取る設定
エラーを先に書くのではなく、エラーの原因になっていた設定からまずは記載しておきます。
やりたかったことは、見出しにもしていたとおり、Gitlab で push の通知をメールで受け取るということ。他の人の push があっても、通知がないと作業進捗がなかなか把握しづらかったのですが、それを解消すべく、 push の通知をメールで受け取るという設定があったので、設定画面からメールアドレスを登録し、サービスを有効化しておきました。
設定のページは、 各プロジェクトページ ⇒ 右上 setting ⇒ 左側ナビの一番下 Services ⇒ 「Emails on push」 ⇒ Acrive にチェックをつけ、Recipients に 送信してもらいたいメールアドレスを登録します。
複数登録する場合はスペースで区切るようです。
届くかどうかを、Test settings のボタンを押して確認。メールが届けば設定成功・・・のはずでした。
ここまでは問題なく動作していたのですが、作業をしたあとの push 自体では連絡が届いていなく、エラーとなって再試行を繰り返していたようです。
ちなみに Gitlab のバージョンは GitLab 6.7.2
です
Emails on push のエラーを修正
エラーについてを検索してみたところ、タイムリーに修正問題箇所の指摘が上がっていたー!!
EmailsOnPushService is not working for one commit in push | GitLab.org / GitLab Community Edition
/app/mailers/emails/projects.rb
に問題書がある様子なのでそこを修正します。
@target_url = project_commit_url(@project, @compare.commit)
この部分を
@target_url = project_commit_url(@project, @commits.first)
と修正。
- @target_url = project_commit_url(@project, @compare.commit)
+ @target_url = project_commit_url(@project, @commits.first)
差分で表示しておきます。この1行の最後、@compare.commit を @commits.first に変更するだけ。設定して再起動してみたところ、エラーはなくなり、pushでメールも届くようになりました!
おまけに遅くなっていた部分の問題も解決!快適にブラウジングできるように!
この修正は 「Fixed for 6.7.5 and 6.8」 と書いているので、次のバージョンでは直っていそうです。すぐにバージョンアップできないような方はお試しください。