🫠

cloud buildのslack通知でのハマりどころ

に公開

Cloud Buildでdockerイメージをビルドし、Cloud Runにデプロイする仕組みを作って、Cloud Build Notifiers(Slack)を使ってビルド結果をSlackへ通知しようとしたのですが、思いのほかハマったので備忘録としてメモっておきます

はじめに

google公式のガイドでcloud buildのビルド結果をslackに通知する方法が示されています
そこにあるcloud-build-notifiersのdockerイメージをcloud runにデプロイしてslackに通知するという感じです
ビルド結果をいちいち見に行かなくてもslackに通知が来るので楽ですね

https://cloud.google.com/build/docs/configuring-notifications/configure-slack?hl=ja

エラーについて

ところが、公式のガイド通りに進めていってもエラーが出てslackに通知が来ません
cloud-build-notifiersのcloud runのログを見に行くと以下のようなエラーが出ていました
エラー内容

failed to run SendNotification: failed to write Slack message: 
failed to unmarshal templating JSON: unexpected end of JSON input

どこでエラーが出ているのかこのログだとわからないので実際にコードを見に行きました
https://github.com/GoogleCloudPlatform/cloud-build-notifiers/tree/master/slack

コードを見てみるとテンプレートのところでjsonのunmarshalが失敗していたのでslackに通知する文のテンプレートでどこかミスったのかなと思ってもう一度ガイドに記載されているslack.jsonをコピペしたのですが、うまくいかず...

ちゃんとローカル環境で上記のコードを動作させて原因を分析すべきでしたがちょっと面倒だったのとサクッと解決するかなと思い、原因分析をサボってました

次にcloud storageに格納してあるyamlファイルが悪いのかなと思ってこちらもコピペしてみましたがうまくいかず...

解決策

結局エラー文でぐぐってこのissueにたどり着きました
dockerイメージを最新ではなく、昔のバージョンに戻したら解決しました
https://github.com/GoogleCloudPlatform/cloud-build-notifiers/issues/145

チュートリアル通りやってもうまくいかない場合があるので皆さんお気をつけください

Discussion