26
34

More than 5 years have passed since last update.

GitLabとRocket.Chatを連携させる

Last updated at Posted at 2016-02-23

GitLabとRocket.Chatを連携させる。

やりたいこと

  • GitLabアカウントでRocket.Chatにログインする
  • GitLabのイベントをRocket.Chatに表示する

環境

GitLab:8.4.4
Rocket.Chat:0.17.0

準備

GitLabとRocket.Chatを用意する。
以下の例ではDocker上に構築するが、そうでなくても勿論構わない。

GitLab
運用時はちゃんと建てた方が良いが、ここでは簡単に。

GitLab
# docker run --name=gitlab -d -p 80:80 gitlab/gitlab-ce

Rocket.Chat
こちらはdocker-composeを使うのが手っ取り早い。

Rocket.Chat
# curl -O https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml
# docker-compose up -d

GitLabアカウントでRocket.Chatにログインする

GitLab, Rocket.Chat共にOAuthが実装されている。

Rocket.ChatにGitLabのURLを指定

Rocket.Chatにログインし、メニューから「管理」->「API」を開き「GitLab URL」にGitLabのURLを指定する(指定しなければgitlab.comに接続する)。
ClipboardImage.png

GitLabにアプリケーションを登録する

rootでログインし、メニューから「Applications」->「New Application」をクリック。
ScreenClip.png

アプリケーション名とRocket.ChatのコールバックURLを入力する。URLは http://[hostname][:port]/_oauth/gitlab 。
ScreenClip.png

Application ID と Secret が取得できる。
ScreenClip.png
これをRocket.Chatに登録。

Rocket.Chat に アプリケーションを登録する

Rocket.Chatのメニューから「監理」->「Accounts」->「Gitlab」を開く。
「OAuth Enabled」を True に、「Gitlab Id」「Clienet Secret」にGitLabで取得したものを設定する。
ScreenClip.png

完成

ScreenClip.png

GitLabのアイコンをクリックすると...
ScreenClip.png

GitLabのログイン画面が表示され...
※ログイン済みであれば省略

ScreenClip.png

確認画面を経て...
※初回のみ

ScreenClip.png

ログイン!!
ScreenClip.png

GitLabのイベントをRocket.Chatに流す

これも双方でWebHookの仕組みが実装済みなので、設定するだけ。

Rocket.ChatでWebHookを受け入れる

管理者でログインし、メニューから「管理」->「Integrations」を開き、「NEW INTEGRATION」をクリック。
ScreenClip.png

リクエストを受け入れる方なので「Incoming WebHook」を選択。
ScreenClip.png

名前とチャンネルを登録。チャンネルは事前に作成しておくこと。
ScreenClip.png

登録してから再度Integrationを選択するとWebHookのURLが表示される。
ScreenClip.png

つまり、このURLにJSONのリクエストを送ると「Post as」で指定したユーザーがしゃべる。実際にcurlでテストしてみると良いでしょう。

GitLabでWebHookを設定する

Slack用の実装がそのまま使える。
連携させたいプロジェクトのメニューから「Settings」->「Services」で「Slack」を選択し、Aciveにする。
URLには前述のRocket.ChatのWeb Hook URL を指定し、Username, ChannelもRocket.Chatに合わせて指定。
Triggerはお好みで。
ScreenClip.png

で、当該プロジェクトにアクションを起こすと...
ScreenClip.png

しゃべった!!

おわりに

今回はGitLabのSlack向けの実装をそのまま利用したが、RESTでJSONを喰わせればRocket.Chatはしゃべるので自作アプリでの利用も極めて容易である。
Rocket.Chatで結合設定をする際にJSONのサンプルが例示がされるので参考にすると良い。
ScreenClip.png

参考

https://github.com/RocketChat/Rocket.Chat/issues/861
OAuthがRocket.Chatに実装されているGitlabプロバイダで上手くいかない場合に。

26
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
34