POSTWebhook 接口
接收 GitHub Release Webhook 推送
供 GitHub 仓库 Webhook 直接调用,不使用管理员 JWT 或 API Key, 唯一凭据是项目上配置的 secret(`X-Hub-Signature-256` HMAC-SHA256 校验)。 - 仅处理 `release` 事件的 `published` / `released` / `prereleased` / `created` / `edited` 动作 - `deleted` / `unpublished` 不会删除已有版本,需人工在后台处理 - 草稿(draft)release、无法解析为可比较版本号的 tag 会被跳过并返回 `ignored` - 版本号已存在时按 GitHub 推送内容覆盖,不存在时创建 - 直接使用推送 payload 中的 release 数据,不再回查 GitHub API
URL
/api/v1/webhooks/github/{projectKey}鉴权方式
需要 Webhook 签名(X-Hub-Signature-256: sha256=<hmac>),不接受管理员 JWT 或 API Key
请求参数
Path 参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| projectKey | string | 是 | 项目主键 project_key(大小写不敏感) |
Header 参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| X-Hub-Signature-256 | string | 是 | sha256=<请求体原始字节的 HMAC-SHA256,密钥为项目 webhook secret> |
| X-GitHub-Event | string | 是 | GitHub 事件名,仅 `release` 会触发同步,`ping` 返回 pong |
| X-GitHub-Delivery | string | 否 | GitHub 投递 ID,仅用于日志关联 |
请求体
{
"action": "published",
"release": {
"tag_name": "v1.4.0",
"name": "Verhub 1.4.0",
"body": "新增 GitHub Release Webhook 同步",
"draft": false,
"prerelease": false,
"published_at": "2026-07-21T10:00:00Z",
"html_url": "https://github.com/example/verhub/releases/tag/v1.4.0",
"assets": [
{
"name": "verhub-1.4.0-win-x64.zip",
"browser_download_url": "https://github.com/example/verhub/releases/download/v1.4.0/verhub-1.4.0-win-x64.zip"
}
]
},
"repository": {
"full_name": "example/verhub"
}
}响应示例
200 响应
{
"status": "synced",
"event": "release",
"action": "published",
"version": "1.4.0",
"created": true
}POST
