在 Flashduty On-call
- 进入 Flashduty 控制台,选择 集成中心 → 变更事件
- 选择 Unleash,填写集成名称
- 如需把变更分派到指定协作空间,在集成的 路由 中按标签(例如
project、environment、flag)配置规则 - 点击 保存,复制生成的 推送地址
在 Unleash 中配置
1
新建 Webhook 集成
- 进入 Unleash 管理界面,选择 Integrations
- 在 Webhook 一项点击 New integration
2
填写推送地址
- Webhook URL:粘贴 Flashduty 集成的完整推送地址
- Content-Type:保持默认的
application/json - Authorization、Extra HTTP Headers:无需填写,Flashduty 通过推送地址中的
integration_key鉴权 - Body template:留空。留空时 Unleash 推送完整的事件 JSON,Flashduty 按该格式解析
3
选择事件和范围
- Events:勾选以下事件,其余事件会被忽略
feature-created、feature-updated、feature-archived、feature-revivedfeature-environment-enabled、feature-environment-disabledfeature-strategy-add、feature-strategy-update、feature-strategy-removefeature-variants-updated
- Projects、Environments:不选表示全部,也可以只选生产环境等需要关注的范围
- 点击 Save
一条变更是什么
事件
id 在一个 Unleash 实例内递增。请为每个 Unleash 实例单独创建一个集成;多个实例共用一个集成时,不同实例的相同 id 会被当作同一条变更。
状态映射
以下推送返回成功但不生成变更:
- 变更请求(Change request)相关事件,例如
change-request-created、change-request-approved、change-request-applied。变更请求应用后,Unleash 会为其中每个 Flag 变更各推送一条上表中的事件,这些事件会被记录 - 标签、过期标记、描述与类型、项目迁移等不改变 Flag 求值结果的事件
- 项目、环境、用户、分群等其他资源的事件,以及缺少
type的推送
变更内容
标签可用于路由和在变更列表中筛选:
常见问题
Unleash 重试推送会重复记录吗?
Unleash 重试推送会重复记录吗?
不会。推送失败(50x 或网络错误)时 Unleash 会重试一次,重试内容与原推送相同,Flashduty 只记录一次。Unleash 不保证推送顺序,Flashduty 使用事件自身的时间(
createdAt)作为变更时间。为什么没有收到变更请求(Change request)的通知?
为什么没有收到变更请求(Change request)的通知?
变更请求本身不改变线上行为,应用之后才生效。应用时 Unleash 会为其中每个 Flag 变更推送对应的
feature-* 事件,Flashduty 记录的是这些事件。推送返回 InvalidParameter 错误?
推送返回 InvalidParameter 错误?
id is missing、featureName is missing:推送内容不完整。请确认 Body template 留空invalid createdAt:事件时间格式不正确- 请求体不是 JSON:请确认 Content-Type 为
application/json,且 Body template 渲染结果是合法 JSON