系统 WebHooks(消息钩子)可以用来在每次系统事件发生时向指定的 Endpoint(端点)发送一个 http 请求。以下是系统事件的例子:
- 用户被创建
- 用户被删除
- 存储库被激活
- 存储库被取消激活
- 构建被创建
- 构建被更新或完成
配置
-
创建一个用于签署 HTTP 请求的共享密钥。这个共享密钥将被提供给 Drone Server 和你的 WebHook 接收者/接收服务。
1 2
$ openssl rand -hex 16 bea26a2221fd8090ea38720fc445eca6
-
更新你的 Drone Server 配置,包括 WebHook 端点地址和共享密钥。
1 2
DRONE_WEBHOOK_ENDPOINT=http://... DRONE_WEBHOOK_SECRET=bea26a2221fd8090ea38720fc445eca6
请求
以下是 WebHook 请求头的示例:
|
|
以下是 WebHook 请求体的示例:
|
|
鉴权
HTTP 请求根据 HTTP 签名规范草案 使用共享密钥进行签名。接收者应该使用签名来验证 WebHook 的真实性和完整性。
用于HTTP 签名验证的第三方库。
- https://github.com/99designs/httpsignatures-go
- https://github.com/99designs/http-signatures-php
- https://github.com/99designs/http-signatures-ruby
- https://github.com/joyent/node-http-signature/
事件
HTTP 请求包括一个请求头变量,以确定他的事件类型。以下是事件类型的列表:
X-Drone-Event: user
X-Drone-Event: repo
X-Drone-Event: build
行为
Payload
数据中包括一个行为字段,它可以用来确定对该对象采取的动作类型。在下面的例子中,我们看到用户对象被创建。
|
|