目标:当 GHCR 发生 package.published 事件时,自动触发 Dockrev discovery scan。
| 字段 | 说明 | 注意事项 |
|---|---|---|
| 启用 | 开关 GHCR webhook 功能。 | 关闭后不会同步 webhook,也不会消费 GHCR 事件。 |
| GitHub PAT(留空=保持原值) | 用于解析 owner/repo 与同步 webhook。 | 留空不会清空已保存 PAT;要更新 PAT 需输入新值并保存。 |
| Callback URL | 供 GitHub 回调的地址。 | 必须是公网可达 HTTPS 地址,通常为 https://<your-domain>/api/webhooks/github-packages。 |
| Repos / 添加 Repo | 维护要跟踪的仓库集合。 | 支持 owner/repo、org/repo、https://github.com/org/repo、https://github.com/<owner>。 |
| 解析并添加 | 将输入解析为候选仓库并加入列表。 | 解析 profile/org 依赖 PAT 与网络可达性。 |
| 搜索 owner/repo | 在已添加仓库中筛选。 | 仅影响当前展示,不影响 webhook 配置。 |
| 选中状态(selected) | 标记哪些仓库参与 webhook 同步。 | 只有 selected 仓库会创建/更新 webhook。 |
GitHub PAT,确认 Callback URL 正确,然后点击“保存设置”。created/noop/updated。package.published),在 Dockrev Queue/日志中确认 discovery 被触发。适用于你当前这类界面。以下 6 项全部满足,GHCR webhook 才会真正生效。
| 配置项 | 建议值 |
|---|---|
| 启用 | 打开(ON) |
| GitHub PAT | 推荐 classic PAT:repo + admin:repo_hook(仅公开仓库可用 public_repo + admin:repo_hook) |
| Callback URL | https://<your-domain>/api/webhooks/github-packages(例如 https://dockrev.ivanli.cc/api/webhooks/github-packages) |
| 添加 Repo | 输入 owner/repo(例如 ivanli-cn/dockrev)后点“解析并添加” |
| selected | 至少勾选 1 个仓库(repos_selected_total > 0) |
| 同步 webhook | 结果为 created / updated / noop,不能出现 error/conflict |
Fine-grained PAT 也可用:目标仓库需授予
Webhooks仓库权限(write),并保证能读取仓库列表(至少Metadata读取权限)。
Dockrev 在 GHCR webhook 流程中会调用这些 GitHub API:
GET /orgs/{owner}/repos、GET /users/{owner}/repos(解析 owner/profile 到仓库列表)GET/POST/PATCH/DELETE /repos/{owner}/{repo}/hooks(读取/创建/更新/删除 webhook)因此 token 权限请按下面二选一配置:
repo + admin:repo_hookpublic_repo + admin:repo_hook创建 token 时明确设置:
profile/org URL 自动解析仓库,选 All repositories(推荐)Webhooks: Read and writeMetadata: Read-only
Packages权限不是本功能的必需条件;GHCR webhook 同步本质上是“仓库 webhook 管理”。
GitHub PAT 显示掩码(ghp_...)。0 个)。created/updated/noop。Settings -> Webhooks 中出现指向 Dockrev 的 webhook(事件包含 package)。Callback URL 必须能被 GitHub 公网访问(内网地址不可用)。POST /api/webhooks/github-packages 路径,不要重写到其他地址。curl 该回调接口返回 400/401,在未带 GitHub 签名时属于预期现象。401 invalid_signature:secret 不匹配或签名错误422:PAT 缺失或权限不足conflict:仓库已有重复 webhook,需确认删除旧 hook0 个:还没有成功添加仓库,或者添加后未勾选 selected。支持以下通知能力:
smtpUrl + to/from 参数)将生成的公私钥写入设置页后,可在浏览器执行订阅/退订并测试通知。
使用 /api/webhooks/trigger 可从外部系统触发 check/update。
X-Dockrev-Webhook-Secretaction + scope + (可选)stackId/serviceId该通道适合与 CI/CD、镜像发布事件或运维平台联动。