0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

github actionsからteamsにオレオレ通知を送信する

Last updated at Posted at 2024-05-09

本記事で紹介している方法は2024 年 8 月 15 日に終了します。以降の対応については作業完了次第別記事として投稿します
https://devblogs.microsoft.com/microsoft365dev/retirement-of-office-365-connectors-within-microsoft-teams/

背景

githubからのteams通知をもっと自由にやりたかった。
デフォルトだと通知で「カードを送信しました」しかでてこないので、いちいちteamsを開くのが非常に嫌だった。
で、いろいろ調べたが情報がまとまっておらず嫌に時間をくったのでメモ。

これでできます

  1. teamsでチャネルを作る
  2. チャネルにincoming webhooksを追加する
  3. incoming webhooksが作成したURLにgithub actionsから通知内容を送信する

以下詳細

teamsにincoming webhooksを追加

以下の記事を参考にさせていただきました。

github actionsから通知内容を送信する

以下は例としてワークフローが終わったタイミングでteamsに通知するgithub actionsです

notify-workflow.yml
name: notify-workflow

on:
  workflow_run:
    workflows: ['workflow1','workflow2']
    types: [requested, completed]

jobs:
  on-requested:
    if: ${{ github.event.workflow_run.conclusion == '' }}
    uses: ./.github/workflows/notify-to-teams.yml

    with:
      url: $incoming webhooksが作成したURL
      payload: >
        '{
          "summary":"${{ github.event.workflow.name }}を開始しました",
          "text":"${{ github.event.workflow.name }}を開始しました"
        }'

  on-success:
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    uses: ./.github/workflows/notify-to-teams.yml
    with:
      url: $incoming webhooksが作成したURL
      payload: >
        '{
          "summary":"${{ github.event.workflow.name }}が成功しました",
          "text":"${{ github.event.workflow.name }}が成功しました"
        }'

  on-failure:
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    uses: ./.github/workflows/notify-to-teams.yml
    with:
      url: $incoming webhooksが作成したURL
      payload: >
        '{
          "summary":"${{ github.event.workflow.name }}が失敗しました",
          "text":"${{ github.event.workflow.name }}が失敗しました"
        }'
./.github/workflows/notify-to-teams.yml
name: notify-to-teams

on:
  workflow_call:
    inputs:
      url:
        type: string
        required: true
      payload:
        type: string
        required: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Notify to Teams
        if: always()
        run: |
          curl ${{ inputs.url }} -X POST -H 'Content-Type: application/json' -d ${{ inputs.payload }}

temasへのcurl送信は再利用可能なワークフローを作成し、各jobで呼び出しています。

送信可能なメッセージ

公式に必要なパラメータが記載されています。

アダプティカードなるものを推奨していますが、incoming webhooksを経由する場合はこちらを使うようです。

summary または text は必須。ただしsummaryを設定しないと通知内容が「カードを送信しました」になってしまうので注意。

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?