Skip to main content
版本要求:此功能需要 On-call 标准版及以上订阅。了解更多
通过 JFrog Artifactory 的预定义(Predefined)Webhook,将制品(Artifact)的上传、删除、移动和复制同步到 Flashduty On-call。每上传一个制品生成一条变更,之后删除同一个制品会把这条变更更新为已取消;每次移动或复制生成一条独立的变更。

在 Flashduty On-call


  1. 进入 Flashduty 控制台,选择 集成中心 → 变更事件
  2. 选择 JFrog Artifactory,填写集成名称
  3. 如需把变更分派到指定协作空间,在集成的 路由 中按标签(例如 repo、path)配置规则
  4. 点击 保存,复制生成的 推送地址

在 JFrog Artifactory 中配置


1

新建 Webhook

  1. 登录 JFrog Platform,选择 All Projects 或某个项目
  2. 进入 Platform → Integrations → Webhooks,点击 New Webhook
  3. 保持 Predefined 开关选中(不要使用 Custom)
需要管理员或项目管理员权限。
2

填写推送地址

  1. Name:例如 flashduty-changes
  2. URL:粘贴 Flashduty 集成的完整推送地址
  3. Secret token:留空即可,Flashduty 通过推送地址中的 integration_key 鉴权
3

选择事件和仓库

  1. 在事件列表中选择 Artifacts 下的 Artifact was deployed、Artifact was deleted、Artifact was moved 和 Artifact was copied
  2. 选择要监听的仓库:可选择全部本地仓库,也可以指定仓库或用包含/排除规则按路径筛选
  3. 点击 Test 检查连通性,再点击 Create
Test 发送的是 JFrog 的示例数据(校验和为 sample_checksum),Flashduty 返回成功但不会生成变更。

一条变更是什么


JFrog 的推送内容里没有变更 ID,Flashduty 用制品所在位置加内容校验和标识一个制品: 对 moved 和 copied,<仓库>/<路径> 是制品原来的位置,<目标> 是推送中的 target_repo_path。

状态映射


Artifactory 的制品事件都在操作完成后推送,因此每条变更收到第一个事件时就已结束。 以下推送返回成功但不生成变更:制品以外的事件域(Artifact Properties、Docker、Builds、Release Bundles 等)、cached(远程仓库缓存了一个下载的制品,不是变更)、Test 按钮发送的示例数据。

变更内容


链接由推送中的 jpd_origin 生成;推送中没有该字段时变更没有链接。 标签可用于路由和在变更列表中筛选:

常见问题


  • 确认 Webhook 是 Predefined 类型,并勾选了 Artifacts 下的事件
  • 确认上传的仓库在 Webhook 选择的仓库范围内
  • 在 Webhook 的 Troubleshooting 页查看推送记录和 Flashduty 的响应(JFrog Cloud 需要实例开启该功能)
把内容完全相同的文件再次上传到同一路径,会在原来那条变更上追加一个事件,不会生成新变更。内容不同则生成新变更。
会追加一个事件,但不会生成新变更。JFrog 的推送内容不带事件时间,Flashduty 以收到推送的时间记录每个事件,因此无法识别重试。
  • unsupported event_type:收到了 Flashduty 尚未支持的制品事件,请联系我们
  • data.repo_key is missing、data.path is missing、data.sha256 is missing 或 data.target_repo_path is missing:推送内容不完整,请确认使用的是 Predefined Webhook,而不是自定义了推送内容的 Custom Webhook