14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cloud Buildの進行状況をSlackに通知する

Posted at

はじめに

前回の記事 で Cloud Build を使ったデプロイが出来るようになりました。
今回は Cloud Build の進行状況を Slack に通知してみます。

通知のトリガー

通知のトリガーとして使えそうなのは次の2パターンになります。

(a)はビルド中の好きなタイミングに仕込めますが、ステップにたどり
着く前にビルドがコケた場合は通知できません。

(b)はビルドがコケた際もそのことをメッセージで拾えます。

Incoming Webhooks の URL を取得する

いずれの方法でもまずは Slack から 通知用URL を取得する必要があります。
公式のこのへん 等を参考に取得してください。

次のような感じになります。
image.png

(a) ビルド構成ファイルにビルドステップを追記する

好きな個所に通知のビルドステップを追加します。
公式のこれ を使って次のようにすればいいようです。

cloudbuild.yaml(抜粋)
- name: gcr.io/cloud-builders/curl
  args:
  - -X
  - POST
  - --data-urlencode
  - "payload={\"text\":\"Cloud Build $BUILD_ID いつやるか?今でしょ\"}"
  - https://hooks.slack.com/services/T78RGFXHD/BM1JWA874/ALmDvClLO5....

実行結果は次のような感じになります。
image.png

(b) Cloud Build がパブリッシュするメッセージを拾う

公式のここ に記載されていますが、Cloud Build API を有効にすると
自動でビルド状態の変化を通知する Pub/Sub トピックも作られます。

image.png

上記を 公式のここ を参考に Cloud Functions でサブスクライブしてSlack に通知します。
次の通り。
image.png

functionの中身(前半)は次のような感じ。
image.png

※ index.js はコピペ時に次の2箇所を修正
image.png

functionの中身(後半)は次のような感じ。
image.png

function が作成されるとビルド完了時に Slack に通知が行われるようになります。
自分の環境では何故かビルドが2つに分かれるが次のような感じ・・
image.png

(b)の別のやり方

(b)と似たようなことはコミュニティから提供されている こちらのイメージ でも出来ます。
これは Dockerfile で提供されているため、利用前にイメージを作成します。
image.png

上記が成功すると次のような感じに。

image.png

イメージが出来たらビルド構成ファイルの先頭に1ステップ追加します。

cloudbuild.yaml(抜粋)
- name: 'gcr.io/$PROJECT_ID/slackbot'
  args: [ '--build', '$BUILD_ID',
          '--webhook', 'https://hooks.slack.com/services/T78RGFXHD/BM1JWA874/ALmD....' ]

以上で導入完了です。
そしてビルドすると次のような感じになります。

image.png

以上です。

14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?