h-otterの備忘録

インフラを中心にコンピュータ関連をいいかんじにやっていきます

GitLabのメール通知をGmailで送る

GitLabはGitHubを参考にして作られたサービスであるため、似たような機能を数多く備えています。今回はGitHubにもあるメール通知をGmailSMTPサーバーから送信する方法を書いていきます。

Gmailのアカウント設定

GitLabからGmailSMTPサーバーにログインするにはセキュリティレベルを下げる必要があります。

ログインした状態で[安全性の低いアプリを許可]にアクセスし、"安全性の低いアプリのアクセス"をオンにします。文字通りセキュリティは弱くなるのでGitLab用のメールアカウントを用意するなどの対策をするとよいでしょう。

GitLabのメール設定

現状のバージョン(7.12.2)のOmnibusをインストールすると、"/etc/gitlab/gitlab.rb"を編集するだけですべて設定することができます。公式サイトの説明が一番わかりやすかったです。

/etc/gitlab/gitlab.rb
13行目から

# gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com'
# gitlab_rails['time_zone'] = 'UTC'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[YourMailAddress]@gmail.com'
gitlab_rails['gitlab_email_display_name'] = '[好きなように決めてください]'
gitlab_rails['gitlab_email_reply_to'] = '[YourMailAddress]@gmail.com'
# gitlab_rails['gitlab_default_can_create_group'] = true
# gitlab_rails['gitlab_username_changing_enabled'] = true

187行目から

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[YourMailAddress]@gmail.com"
gitlab_rails['smtp_password'] = "[YourPassword]"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer' # Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert',$
# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"

以上で設定できたので反映させます。

$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl restart

これで設定できたはずですが、テストメールを送る機能を見つけられていないので検証する際はIssueを自分で作成して発言するなどが良いかと思います。

GitLab CIのメール設定

前述したGitLabの設定を行っていれば、GitLab CIの設定は簡単です。

/etc/gitlab/gitlab.rb
412行目から

gitlab_ci['gitlab_ci_email_from'] = '[YourMailAddress]@gmail.com'
gitlab_ci['gitlab_ci_support_email'] = '[YourMailAddress]@gmail.com'
# gitlab_ci['gitlab_ci_all_broken_builds'] = true
# gitlab_ci['gitlab_ci_add_pusher'] = true

同様に反映させて終了です。

$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl restart

自分は友人との開発用にGitLabのサーバーをVPNにおいているのですが、外出先でも即時通知してくれるメール機能は重宝しています。皆さんもぜひ使ってみてください。

参考URL

安全性の低いアプリを許可 SMTP settings / GitLab.org