見出し画像

GitHub Actionsからslackへジョブの承認ボタンを送るslack-approvalを作成しました

仕事でGitHub Actionsでちょっとしたワークフローを作るという要件があったのですが、GitHub Actionsのapprovalの仕様が少しややこしくてもう少しシンプルに、Slack上に承認ボタンを押すと後続のジョブが実行されて、Rejectボタンを押すとキャンセルされるようにできないかな〜と思って、自作のアクションを作ってみました。

設定方法はこんな感じ

jobs:
 approval:
   runs-on: ubuntu-latest
   steps:
     - name: send approval
       uses: varu3/slack-approval@main
       env:
         SLACK_APP_TOKEN: ${{ secrets.SLACK_APP_TOKEN }}
         SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
         SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
         SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
       timeout-minutes: 10

uses: varu3/slack-approval というステップを追加して必要な情報(Slack Appのクレデンシャル)を入力するだけです。

画像1
slack-approvalの投稿画面

このStepに差し掛かると、上記のようなボタンが表示されます。 timeout-minutes で指定した時間以内に Approve を押すと後続の処理が実行されます。 Reject を押すとそのワークフロー自体は失敗します。

クリックするとクリックした人の名前も表示されます

社内でドッグフーディング的に使っていますが今のところ特に不具合などは出ていなさそうです。シンプルなちょっとしたワークフローを組んだりする際に、とても便利だと思いますのでぜひ使ってみてください!


ちなみに、中身の実装について

  • slack-sdkでPostした投稿(ボタンアクション)をSlack AppのSocket modeを有効化してイベントを拾っているだけのシンプルな実装です

  • Slack AppのSocketモードは外部から通信が通らない環境でもこのようにイベントをListenできるので非常に便利で強力な機能ですね〜


最近はずっとSlack botやActionsを耕しているおじさんになりつつあります。

この記事が気に入ったらサポートをしてみませんか?