GitHub Actions - Worflowが開始・終了したらSlack通知してみる

11119 ワード

特定のWorkflowが開始・終了したらSlack通知したい場面は多々あると思う
そんな時に、どのようはどうすればよいのか整理しておく

on:workflow_run

Workflowを起動できるEventの1つにworkflow_runがある。
これは、Workflowが開始・終了した時に発行されるものである。

対象のWorkflowや、開始・終了、ブランチなどを指定できる。

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

Workflowが開始・終了したら処理する

types: [requested]とすると開始した時のEventを対象とできる。
types: [completed]とすると終了した時のEventを対象とできる。

開始したときは、github.event.workflow_run.conclusionnullが入っている。
終了したときは、github.event.workflow_run.conclusion"success"または"failure"が入っている。

なので、types: [requested, completed]とし、github.event.workflow_run.conclusionの値に応じてJobの処理条件を設定すれば、Workflowが開始・終了(成功・失敗)したら処理することができる。

workflow_run.yml
name: workflow_run
on:
  workflow_run:
    workflows: [helloworld]
    types: [requested, completed]
jobs:
  on-requested:
    runs-on: ubuntu-20.04
    if: ${{ github.event.workflow_run.conclusion == '' }}
    steps:
      - run: echo 'requested'
  on-success:
    runs-on: ubuntu-20.04
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      - run: echo 'success'
  on-failure:
    runs-on: ubuntu-20.04
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    steps:
      - run: echo 'failure'

Slack通知する

Slack Send GitHub Actionを使うと手軽にSlack通知できる。