はじめに
どうも!生産技術部のエンジニアです。私の所属する部署は仕事中にチャット?言語道断。という風潮が残されています。古き良き文化を捨て、新しい事に挑戦する事が「働き方改革」に繋がると信じています。ということで、今回は、GitLab Mattermostの導入を実施したいと思います。ここでは、GitLab Mattermostの有効化から、シングルサインオン(SSO)の設定、"webhook is blocked"エラーの対応方法を紹介します。
GitLabサーバを一から構築される方は、以下からご覧ください。
「proxy環境下でDocker Composeを用いてCentOS7上にGitLab Dockerを作成」
環境
- CentOS : 7.6.1810
- Docker-CE : 19.03.1
- Docker Compose : 1.25.0
- GitLab-CE Docker : 12.2.0-ce.0
前提条件
Docker、GitLabの導入が実施済みであること。
「proxy環境下でDocker Composeを用いてCentOS7上にGitLab Dockerを作成」
を参考に導入してください。
GitLab Mattermostの有効化
GitLab MattermostはGitLabの同封されていますが、標準で無効化されています。下記の設定を追加後、gitlab-ctl reconfigure
を実施する事で有効になります。
mattermost_external_url 'http://gitlab.example.com:8001'
GitLabのDockerコンテナを利用している場合は、以下のコマンドを使用します。再設定が完了した後、http://gitlab.example.com:8001
にアクセスし、GitLab Mattermostに接続できる事を確認して完了です。
$ docker exec -it gitlab_web_1 gitlab-ctl reconfigure
シングルサインオン(SSO)の設定
GitLabのアカウントを利用して、GitLab Mattermostにログインする場合は、SSOの設定が必要になります。まずは、GitLabのAdmin Area
->Application
から新規のアプリケーションを追加します。既にGitLab Mattermostがある場合は、追加不要です。下記の項目を設定して下さい。
- Name
-
GitLab Mattermost
(任意の名前)
- Redilect URI
http://<登録したMattermostのURL>/login/gitlab/complete
http://<登録したMattermostのURL>/setup/gitlab/complete
- Scope
- api
登録したアプリケーションを選択し、Application ID
とSecret
の値を確認します。
設定内容は、GitLabの公式ドキュメントに従います。gitlab_id
とgitlab_secret
には、先ほど確認したApplication ID
とSecret
の値を登録します。設定後は、gitlab reconfigure
を実施し完了です。
mattermost['gitlab_enable'] = true
mattermost['gitlab_id'] = "12345656"
mattermost['gitlab_secret'] = "123456789"
mattermost['gitlab_scope'] = "api"
mattermost['gitlab_auth_endpoint'] = "http://<登録したGitLabのURL>/oauth/authorize"
mattermost['gitlab_token_endpoint'] = "http://<登録したGitLabのURL>/oauth/token"
mattermost['gitlab_user_api_endpoint'] = "http://<登録したGitLabのURL>/api/v4/user"
”webhook is blocked”の対応方法
Gitlabからpush通知等をGitLab Mattermostに送りたい場合は、webhookの設定が必要になります。設定内容は省略しますが、「GitLabとMattermostの連携」を参考に設定させて頂きました。ここでは、以下のエラーが出た場合の対応方法を紹介します。エラー内容は、ローカル宛の外向きのwebhookは禁止と言う事のようです。
GitLabのバージョンにより設定項目の所在が変わるようですが、現在のバージョン(12.2.0-ce.0)では、Admin Area
->Settings
->Network
の下記項目にチェックを入れる事で、ローカル宛のwebhookが可能になるようです。
- Allow requests to the local network from web hook and services
最後に
GitLab Mattermostの導入が完了しました。恒久的に利用するかどうかは、周りの反応次第です。受け入れてもらえるかわかりませんが、楽しみです。
会社で堂々とチャットがしたいwww(本音)