Spinnaker のパイプラインを実行するためのトリガーが多数用意されています。
- Webhook
- GitHub
- Cloud Pub/Sub
- Cloud Build *1
- GCS *2
- Docker Registry
- Jenkins
- Travis CI
- Wercker
- 別のパイプライン
- CRON
- Manually run (手動実行)
本記事ではトリガーの一つである、Webhook の設定方法や呼び出し方について紹介します。
パイプラインの設定
Configuration の Automated Triggers で Type を Webhook にするだけです。
Source は 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 に指定します。