Skip to main content
版本要求:此功能需要 On-call 标准版及以上订阅。了解更多
通过 GitLab 项目或群组的 Webhook,将部署(Deployment)同步到 Flashduty On-call。每一次部署对应一条 Flashduty 变更;部署从等待审批、执行到成功、失败或取消的每个状态,都会更新同一条变更。 GitLab CI/CD 中声明了 environment 的任务会自动创建部署,因此使用 GitLab CI/CD 发布的项目无需改动流水线即可接入。GitLab.com 和自托管 GitLab 均适用。

在 Flashduty On-call


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

在 GitLab 中配置


1

打开 Webhook 设置

  • 项目级:进入项目 Settings → Webhooks,点击 Add new webhook
  • 群组级(GitLab Premium 及以上):进入群组 Settings → Webhooks,点击 Add new webhook,群组下所有项目的部署都会推送
项目级需要项目的 Maintainer 或 Owner 角色,群组级需要群组的 Owner 角色。
2

填写推送地址

  1. URL:粘贴 Flashduty 集成的完整推送地址
  2. Signing token 和 Secret token:无需配置,Flashduty 通过推送地址中的 integration_key 鉴权
3

选择事件

  1. 在 Trigger 中只勾选 Deployment events,取消默认勾选的 Push events
  2. 保持 Enable SSL verification 勾选,点击 Add webhook
GitLab 的 Test 功能不能发送部署事件;用 Test 发送的其他事件(例如 Push events)Flashduty 返回成功但不会生成变更。

一条变更是什么


deployment_id 在同一个 GitLab 实例内唯一。如果要接入多个 GitLab 实例(例如 GitLab.com 和自托管实例),请为每个实例创建一个集成。

状态映射


Done、Failed 和 Canceled 是结束状态,Flashduty 会记录变更结束时间。GitLab 实际只在 blocked、running、success、failed、canceled 时推送事件。 以下推送返回成功但不生成变更:Deployment 以外的事件类型(Push、Pipeline 等)、受保护环境的审批事件 approved 和 rejected。审批事件描述的是审批记录而不是部署本身:批准后 GitLab 会在部署开始时推送 running,拒绝后会推送 failed,变更状态以这些部署事件为准。

变更内容


标签可用于路由和在变更列表中筛选:

常见问题


  • 确认 Webhook 勾选了 Deployment events。只勾选 Push events 时不会产生变更
  • 在 GitLab Webhook 编辑页的 Recent events 查看推送记录和 Flashduty 的响应
  • 只有 GitLab 部署才会产生部署事件,例如在 CI/CD 任务中声明 environment,或调用 Deployments API
不会。同一状态、同一时间的事件只记录一次。
是的。GitLab 拒绝部署后会推送 failed,Flashduty 按部署状态记录为 Failed,标签 state 为 failed。
  • unsupported deployment status:收到了 Flashduty 尚未支持的部署状态,请联系我们
  • deployment_id is missing:推送内容不完整,请确认推送来自 GitLab 原生 Webhook