Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GitLab Issue Handler 社内IT問い合わせ窓口のSlack Bot化

389 views

Published on

PyCon JP 2020 アイリッジブースで公開していたスライドコンテンツです。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

GitLab Issue Handler 社内IT問い合わせ窓口のSlack Bot化

  1. 1. GitLab Issue Handler 社内IT問い合わせ窓口のSlack Bot化
  2. 2. 1
 モチベーション
 • 社内IT作業の効率化
 主にGitLab issueで課題管理しているが、Slackでの問合せが多く、その度にIssueを担当者が起票していた。
 
 • 表記の揺れを統一して管理しやすく
 表記ブレがあることも課題であっり、同じような問い合わせはテンプレート化したいという要望があった。
 
 • 検討事項
 • 社内IT担当はSlackにてやり取りされた依頼をGitLabに転記する必要がある
 • 依頼者はMarkdown形式を理解して、GitLab上で起票しなければならずハードルが若干高い
 • また、入力フォームがあるわけでもないため、記載の自由度が高く、表記ブレが起こりやすい
 
 1 上課題を解決するため、AWS上にPythonでSlack Botを構築し、Slackからの社内ITへ の依頼をGitLabに自動起票するようにした。

  3. 3. 2
 インターフェース
 • API Gateway + Lambda関数のシンプルな構成 
 Slack上で特定のスラッシュコマンドを叩くと、依頼形式選択のメニューが表示される。
 依頼形式を選択すると、該当形式に対応した依頼詳細を記載するフォームが表示される
 依頼作成ボタンを押下すると、GitLab SDKを利用してGitLab上に自動でissueが作成される
 ※ SlackAPIのinteractive系のサービス群を利用してAPIGatewayまでの設定をしている
 ※自社のワークスペースからのリクエストであるかはSlackでも公表されているHMAC-SHA256認証形式を利用
 2 コマンド入力から宛先決定 依頼内容をプルダウンから選択 必要情報を入力して「新規作成」ボタ ン押下するとissueが作られる
  4. 4. 3
 issueフォームの構成について 
 とてもシンプルでslackとlambda、gitの3つで構成されている。 基本はslackからコマンドでリクエストを送り、lambda側 でslack側に依頼フォーム を表示するようレスポンスを返したり、Gitにissueを作るようにリクエストを送ったり してる。
 ※インフラも手作業でGUIポチポチするのではなく、CLIコマンド一発でデプロイ可能にし、インフラソースとLambda関 数ソースを別々に管理し、別々にデプロイ可能にしている
 3
  5. 5. 4
 ソースコード紹介 lambda関数
 4 全体的にslackの機能を利用しました。ダイアログの入出力はInteractive message機能を利用しています。
 ダイアログ生成
 ダイアログ呼び出し

  6. 6. 5
 ソースコード紹介 lambda関数
 5 IncommingWebHockを利用して、GitLabIssue作成時の通知も行っています。

  7. 7. 6
 ソースコード紹介 AWS
 cdkコマンドのdeployから構築出来るようにCI/CD化しました。デプロイ管理はgitlabciで自動化しています。ビルド〜 差分チェックまでをgitlabCIに任せdeployは手動で行っています。
 6 差分が発生すると警告表示 →

  8. 8. 7
 まとめ
 大体、構築に1ヶ月程度かかりました。(片手間での作業のため、期間としては3〜4ヶ月)
 7 本番運用はまだ行われていませんが、  プレテストでの評判は上々↑↑ 
 
 
 コスト削減と管理コスト削減に期待出来る結果となりました。

×