Slack×HubotでChatOpsをはじめてみた

こんにちは、小野寺です。

私が所属しているグループでは、開発用のチャットツールにSlackを使っています。
Slackは多くのサービスとの連携が提供されている魅力的なツールです。

そこで前から気になっていた、ChatOpsをはじめてみました。

ChatOpsは簡単に言うとチャット上にbotを用意して、そのbotにチャットで呼びかけるとbotがいろいろやってくれるというものです。

今回は、SlackとHubot、そしてGitLabを使ってChatOpsしてみたいと思います。
ChatOps

※SlackとHubotの連携については割愛します。(ほとんど設定いらないです)

実装するのは次の2つの機能です。

  • ブランチの作成
  • マージリクエストの作成

GitLabはAPIを提供しているので、HubotでGitLabAPIを使って実現したいと思います。

HubotはNode.jsで作られているので、npmのモジュールが使えます。
今回は、GitLabAPIをNode.jsで使えるgitlabモジュールを利用します。

これでGitLabのユーザー一覧を見ることができます!
img1

この時は、HubotでGitLabAPI使うのなんて楽勝だなとか思っていました。。。

よし、ブランチ作成とマージリクエストも同じように実装しよう!

実装してみて気づきました。あれ、コマンドがめっちゃ長くなってる?

な、長い。。。GitLab上で操作したほうが(ry
しかも、プロジェクトIDとかアサインIDとか混ざっちゃってます。。。

このままでは誰も使ってくれないので、次のような方針を決めました。

  • ブランチ作成時の 元ブランチ を デフォルトブランチ に限定(自動)
  • マージ先の ターゲットブランチ を デフォルトブランチ に限定(自動)
  • GitLabのプロジェクトをSlackのChannelとヒモ付(別途登録)
  • アサインユーザーを Slackのユーザーで選択可能に (別途登録)
  • コマンド自体も短く!

これらをふまえた結果、使ってもいいかなくらいのレベルに短くなりました。

img2

Slackの情報とGitLabの情報の登録には、expressというNode.jsのWebアプリケーションフレームワークでWebフォームを作り、Redisに保存という方法で実装しました。ここで登録する情報にはGitLabのプライベートトークンも含まれるので、チャット上からの登録を避ける意味もあります。

今回は、GitLabの操作をChatOpsでやってみました。
引き続きbotを育てていきたいと思います!

Comments are closed, but you can leave a trackback: Trackback URL.