Github x Teams Webhook/Notificationによる連携方法

TeamsとGithubの連携方法について解説します。GitにpushやPull Requestdを出す度にメンバにメッセージを送る手間を自動化しましょう。
Slackとの連携方法は沢山出てくるのですが、Teamsは古いものしか無かったので纏めておきます。

1. TeamsとGithubの連携方法

  • 2種類あります
    連携イメージ

1.1. Webhooks

  • Githubの機能
  • 任意のEventを起点に発火
    • ex.) masterへのpush, PullRequest…
  • 特定のURLに対して通知を飛ばす
    • Teamsの特定チャンネルのコネクタ宛
  • Teams側ではコネクタでリクエストを受け取る
    • ex.) Incoming Webhook or Githubアプリ

1.2. Notification

  • Githubの機能
  • Eventを起点に発火
    • 自分でEventを絞ることはできない
  • 特定のメールアドレスに対して通知を飛ばす
    • Teamsの特定チャンネルのメールアドレス宛
    • Teamsのチャンネルにはそれぞれ一意なメールアドレスが与えられている

1.3. どちらを使うべきか?

  • 社内セキュリティや機能制限でWebhookを使えない or メーリングリスト等にも通知を飛ばしたい
    • Notification
  • 特に制限無し
    • Webhook

2. WebhookでTeams x Githubを連携

  • Gituhubアプリは社内の機能制限で入れられなかったのでIncoming Webhookを利用します
    • TeamsのGithubアプリ
      • Teams App Storeかここで入手可能

2.1. Teamsにコネクタを追加

  • チャンネル名の右にある・・・からコネクタを選択
    コネクタ

  • Incoming Webhookの構成を選択
    Incoming Webhook

  • 接続名

    • Github等判別可能な名前を指定
  • イメージを設定

    • Botがメッセージを投稿する際のアイコンになる

Incoming Webhook

  • 作成を押下

  • 出てきたURLを控えて完了
    URL

  • チャンネルにメッセージが投稿される
    Message

2.2. GithubのWebhook設定

  • 設定画面
    • 任意のリポジトリのページに移動
    • Settings
    • Hooks
    • Add webhook

Github Webhooks

  • Payload URL
    • 送信先のURLを指定
    • 控えておいたTeamsのコネクタのURLをコピペ
  • Secret
    • パスワードが必要であれば設定
  • Which events would you like to trigger this webhook?
    • 通知を飛ばすイベントを絞りたい場合は ”Let me select individual events”を選択
    • 出てきた選択肢から必要なものをチェック

Events

  • 設定が完了したらAdd webhook
  • 以上でpush時にTeamsに通知が投稿されるようになります

3. NotificationでTeams x Githubを連携

3.1. メールアドレスを取得

  • チャンネル名の右にある・・・から”メールアドレスを取得”を選択
    Teams channnel mail address

  • 出てきたアドレスをコピー

    • <>で囲まれている箇所がメールアドレス
    • 通常のメールからここに対してメールを送ればTeamsに内容が投稿される

3.2. GitのNotificationに設定

  • 任意のリポジトリのSettings/Notificationsへ移動
    • Addressに先ほど控えたTeamsチャンネルのURLをコピペ
      image
  • 以下のようになれば設定完了
    image

  • 試しにpushをすると、Teamsに投稿されます
    image

4. その他

Microsoft FlowやAutomationによる自動化

  • 通知が来たタイミングでワークフローを実行させることもできるようです
    • Slackのワークフロー機能のようなもの
  • 社内の機能制限により試せなかったので、変えさせられたら追記します

参考

関連記事

その他

@EventEmitter @Input @Output @ViewChild ACM AMP API Gateway AR AR.js AR.js Studio AWS AWS Amplify AWS Budgets AWS Cost Explorer AWS SDK for JavaScript AddThis Adobe XD Alexa Amazon CloudWatch Amazon Honycode Amazon SNS Android Angular Angular Material AngularFire AppSync Augury C CDN CI/CD Cloud Craft Cloud9 CloudFormation CloudFront CloudTrail Cognito Cost Anomaly Detection Cubase ai Cubasis LE DTM Disqus DynamoDB Elgato HD 60S Firebase Firebase Hosting Former2 Github Github Actions Github.com GithubEnterprise GithubPages Google Chrome Google Cloud Shell GraphQL Hexo Hosting IAM Ionic JSON JavaScript LadioCast Logging LowCode MFA MS Authentication MacBook Pro 16 Mind Node NETDUETTO Netflix Party Netlify Network NoCode Observable PO PdM Promise RPA ReactiveForm Recognition Route53 S3 SAM(Serverless Application Model) SAR SSL SYNCROOM Schematics ScrumInc Serverless Service Siri Sitemap Spark AR Steinberg UR44C Teams Touch Cast Studio Treetable TypeScript UI UI Bakery WAF WAFv2 WEB Page Dev WEB会議 WebAR WebSocketAPI Webhook Windows Power Automate Wireshark aot async/await aws config cloud9 display.land draw.io e2e test filter() forkJoin() google search console hexo-generator-amp iOS iPad Pro iPhone icarus map() mat input mat tree mat-checkbox mat-input mat-selection-list mmhmm ngFor plantUML popIn Aladdin2 then() vscode ”global is not defined” らくがきAR アジャイル アジャイル開発 クロスプラットフォーム ショートカット スクラム スクラム開発 テレワーク ファイル操作 ブラウザ型IDE プロダクトオーナー プロダクトマネージャー プロトタイピング リモートセッション 共同開発 双方向データバインディング 待ち合わせ処理 認定スクラムマスター 静的WEB Hosting 静的WEBサイトHosting
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×