背景
https://newsdict.io でgithub actionsを使ったテスト後にslackにテスト結果を通知させたい
実装方法
- stepsの最後にrtCamp/action-slack-notifyを入れて、ビルドが終わったら通知を実行されるようにする
- actionsのif conditionalを使って条件分岐させる
- forkしたレポジトリからのPullRequest時には、Github secretが使えないのでmasterにpushしたときのみ、slack通知を発火するようにしている。
完成コード
キーポイント
- slack notifyの個所が2つある
ビルドが通った場合と失敗した場合でビルドを分けている、{{ job.status }}を使えばビルド結果は判断可能だが、色分けやメッセージを変更する場合はこのやり方が妥当でしょう。 - if conditionalで[env.SLACK_WEBHOOK != null ]を行っている
forkしたレポジトリからPull Requestを送るときはPR先のsecretを読み取ることができないため、slack notifyでビルドエラーになっていしまう。本末転倒なのでsecretsが取れた場合のみslock notifyを発火するようにしている - pullrequest, master両方トリガーにしているため、forkしたレポジトリからのpull request時にもPR元にsecretsさえ登録していれば、slack notifyが発火する(ややこしいが、PR先、PR元双方のactionsが動作することによってこれは実現される)