本日も乙

ただの自己満足な備忘録。

Webhook をトリガーに Spinnaker のパイプラインを実行する

Spinnaker のパイプラインを実行するためのトリガーが多数用意されています。

本記事ではトリガーの一つである、Webhook の設定方法や呼び出し方について紹介します。

パイプラインの設定

Configuration の Automated Triggers で Type を Webhook にするだけです。
Source は Webhook のエンドポイント名につきます。

spinnaker-webhook

画面上に出てくる、 http://localhost:8084/webhooks/<source> が Webhook のエンドポイントです。

Webhook にペイロードを POST することでパイプラインが実行されます。

$ curl http://localhost:8084/webhooks/<source> \
  -X POST \
  -H "content-type: application/json" \
  -d '{ }'

オプションで特定のペイロードのみ受け付けるように制約をかけることもできます。
上記画像の Payload Constraints でパラメータ名と許容する値を指定します。 上図の例では .* にしているため、値は何でも受け付けます。

リクエストするときは以下のようにペイロードの付与します。

$ curl http://localhost:8084/webhooks/<source> \
  -X POST \
  -H "content-type: application/json" \
  -d '{"api_name": "FooApiService"}'

ペイロードの受け取り

Webhook で渡したペイロードを次のステージで受け取る方法です。
例えば、 Bake (Packerによるイメージ作成) ステージの場合は、以下の図のように Show Advanced Options で ${ trigger['payload']['api_name'] } を Value に指定します。

spinnaker-webhook

参考文献

*1:Cloud Pub/Sub 経由でトリガーされます

*2:Cloud Pub/Sub 経由でトリガーされます