本記事で紹介している方法は2024 年 8 月 15 日に終了します。以降の対応については作業完了次第別記事として投稿します
https://devblogs.microsoft.com/microsoft365dev/retirement-of-office-365-connectors-within-microsoft-teams/
背景
githubからのteams通知をもっと自由にやりたかった。
デフォルトだと通知で「カードを送信しました」しかでてこないので、いちいちteamsを開くのが非常に嫌だった。
で、いろいろ調べたが情報がまとまっておらず嫌に時間をくったのでメモ。
これでできます
- teamsでチャネルを作る
- チャネルにincoming webhooksを追加する
- 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を設定しないと通知内容が「カードを送信しました」になってしまうので注意。