株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

GitとCI/CDに関する知識ゼロのSEが、GitLabでマージリクエストを作成するとMicrosoft Teamsに通知するように設定する

皆様こんにちは。SEの小池と申します。

GitLabではグループ、プロジェクト 及び インスタンス単位で "インテグレーション" という設定が可能です。
CI/CDパイプラインにおけるインテグレーションとは別物です。

この設定値では、リポジトリに対するプッシュが発生した際や、マージリクエストが作成された際などの特定のイベントが発生した場合に、3rdパーティ製品への通知を超簡単に設定できます。
今回はインテグレーション設定を使って、対象のPJでマージリクエストが作成された際にMicrosoft Teamsに通知する設定をします

本記事の対象の方

  • GitLabでマージリクエストの作成 等のイベントが発生した際に、Microsoft Teamsに通知を送りたい方。

今回のブログのゴール

このブログのゴールはこちらです。

今回のゴール
  • マージリクエストを作成すると、Microsoft Teamsに通知が飛ぶように設定する。

このブログをお読みいただくにあたっての事前ご連絡事項

  • 本記事はオンプレミス版 (Self-Managed) のGitLab Enterprise Edition 14.10.4-ee (Ultimate) における仕様をベースに記載しております。それ以外のエディションやバージョンではこの記事に記載の通りではない可能性がございます。
  • 本記事は既にMicrosoft Teamsをご利用可能な状態であることを前提として記載しております。
  • 本記事のGitLabのGUIは日本語にローカライズした状態で掲載しております。それ以外の言語をご利用の方は適宜読み替えてください。

GitLabのインテグレーション概要

GitLab のプロジェクト (及び グループ や インスタンス) を他のアプリケーションと統合できる機能です。
参考 : Project integrations | GitLab

特定の3rdパーティ製品との連携に必要なWebhook設定をプラグインのような感じで簡単に設定できる機能、といったほうがイメージしていただきやすいかもしれません。

本設定項目で統合可能な3rdパーティ製品はGitLab Docsに一覧で記載されています。
参考 : Project integrations - Available integrations | GitLab

基本的には統合先の3rdパーティ製品の特性 (チャットツール、課題管理ツール 等) を考慮した設定値が準備されていて、必要最低限の項目を設定するだけで統合が可能です。

インテグレーションの設定は、プロジェクト、グループ、インスタンス (オンプレ版に限る) のレベルで設定が可能です。
本設定値は2022/08/17時点ではSaaS版 (GitLab.com) , オンプレ版 (Self-Managed版) の両方で使用可能で、且つ、無料版を含む全てのティアで使用可能です。
GitLabと3rdパーティ製品との統合 (連携) が必要な場合、カスタムによるWebhookの実装を検討するより前に、本機能で連携の可否と要件を満たせるか否かをご確認いただければと存じます。

Microsoft Teams側の設定

では早速GitLabのインテグレーション機能を使ってみます。
今回はGitLabの対象のプロジェクトでマージリクエストを作成した際に、Microsoft Teamsに通知が飛ぶように設定します。

最初にMicrosoft Teams側の設定をします。
なお、これらの設定手順はGitLab Docsに記載されておりますので、もしよろしければ併せてご参照いただければと存じます。
参考 : Microsoft Teams service | GitLab

まず、通知先となるチームとチャネルを用意します。
既存のチームとチャネルを使用することも可能です。
この手順では、チーム [SSG小池-Webhookテスト用GRP] のチャネル [一般] に通知を送ります。

上の検索ボックスにincoming webhookと入力します。
すると下図の通りincoming webhookのアプリ候補が表示されるので、それをクリックします。

以下のような画面が表示されるので、[チームに追加] をクリックします。

検索ボックスに任意のワードを入れ、通知を送るチャネルを検索・クリックします。

[コネクタを設定] をクリックします。

以下の画面が表示された場合は、[コンテンツを新しいウィンドウで開く] をクリックします。

このコネクタの名前を指定します。
また、任意でこの通知のアイコンを設定できます。今回はGitLabのアイコンを指定してみました。
GitLabのアイコン : Press kit | GitLab

[作成] をクリックします。

コピーアイコンをクリックして、Webhookに必要なURLをコピーします。
このURLは後ほどGitLab側の設定で使うので、どこかにメモしておくことをお勧めいたします。

[完了] をクリックします。

続けて以下の画面が表示された場合は、右上の [×] をクリックして画面を閉じてください。

以上でMicrosoft Teams側の準備は完了です。

GitLab側の設定

GitLab側の設定をします。
この手順は前の手順 Microsoft Teams側の設定 が完了していることが前提となります。まだ完了していない場合はそちらの手順を先に実施してください。
なお、この章の手順はGitLab Docsに記載されておりますので、もしよろしければ併せてご参照いただければと存じます。
参考 : Microsoft Teams service | GitLab

GitLabに管理者権限でログインします。
対象のプロジェクト (もしくはグループ、インスタンス) のページを開き、[設定] > [インテグレーション] を開きます。
このブログでは例として、プロジェクトのインテグレーションを設定します。

インテグレーションが可能なサービス一覧が表示されますので、その中の [Microsoft Teams notifications] をクリックします。

このインテグレーションを有効にするために、[Enable integration] の [有効] にチェックを入れます。

通知を送りたいイベントにチェックを入れます。
ここで設定可能なイベントについてはGitLab Docsにも記載があります。
参考 : Microsoft Teams service | GitLab
このブログでは例として、マージリクエストにのみチェックを入れます。

"Webhook" に前の手順でコピーしておいたURLをはりつけます。
併せて、"Branches for which notifications are to be sent" のプルダウンから、通知を送りたいブランチを選択します。
プルダウンは下図の通り選択になっており、正規表現等の細かい設定は不可となっております。

テストの通知をTeamsに送るために、[Test settings] をクリックします。
成功すると画面左下に「Connection successful」と表示されます。

実際に通知先に設定したTeamsのチャネルに、通知が来ていることを確認します。
なお、インテグレーション側の設定にかかわらずテスト通知はpush通知となる仕様のようです。

[変更を保存] をクリックします。

以上でGitLab側の設定は完了です。

実際の通知されたメッセージの内容

実際にマージリクエストを作成、承認、マージした時の通知が下図の通りとなります。
なお、通知メッセージの青字になっている箇所はGitLabの各項目へのリンクとなっています。

通知はおおよそ以下の情報で構成されています。
このブログではマージリクエストの通知のみ有効にしましたが、他のイベントの通知内容もほぼ同様の情報で構成されています。

  • タイトル行 : イベントが発生した グループ名 / プロジェクト名。
  • 1行目 : イベントの概要と実行したユーザー。
  • 2行目 : イベントが発生した グループ名 / プロジェクト名。リンク付き。
  • 3行目 : イベントの詳細情報。イベントの種類に依存する。例) MRやコミットのID、コメント 等。場合によってリンク付き。

個人的にちょっと驚きなのが、それぞれアクションを実行したユーザー名が表示されることはもちろん、GitLabでのアイコンが表示されたことです。
文字でユーザー名を確認するより視覚的に認識しやすいので、個人的には結構よい仕様だと思いました。

最後に

この度はGitもCI/CDもよくわかっていないど素人SEによるGitLab検証ブログをお読みいただき、誠にありがとうございます。
このブログの目標は以下のとおりでしたが、皆さまはいかがでしたでしょうか。


今回のゴール
  • マージリクエストを作成すると、Microsoft Teamsに通知が飛ぶように設定する。

一からWebhookを設定するにはGitLabと3rdパーティ製品の両方においてAPIの知識が必要ですが、GitLabのインテグレーション設定を使うと簡単に統合 (連携) することが可能です。
インテグレーションのメニューから統合 (連携) 可能な製品は限定的ですが、もしGitLabと統合 (連携) したい3rdパーティ製品がインテグレーションで設定可能なら、かなりラッキーです!
設定と試行は非常に容易ですので、是非お試しいただければと存じます。
この記事がGitLabを触り始めた方の一助となれば幸いにございます。


GitLabに関するお問い合わせは、以下のフォームからお願い致します。
GitLab製品 お問い合わせ

今までのGitLabの検証ブログはこちらです。
GitLab カテゴリーの記事一覧 - ネットワールド らぼ

GitLab操作デモ動画 (基本編) を作ってみました。(音声の録音は自宅でiPhoneのボイスメモ使うという超低クオリティですが…。)
つたない内容ではありますが、ご興味がおありでしたら是非ご視聴いただければと存じます。

www.youtube.com