前言
之前有针对迭版本代发布的自动化解决方案《如何实现jenkins、sql、redis、git等工具的一体化自动发布?》;有时 bug 的修改发布也有些繁琐,浪费不少时间在重复的事情上。本篇为解决 bug 自动发布给出了一个解决方案。
bug 单的特点有:小、随时性,所以无法采用定时执行。当前选择方案是 webhook ,即 tapd 发送单子完成的消息到 cronin ,cronin 接收消息并按规则解析内容后,执行匹配的任务。
TAPD 腾讯敏捷协作平台。为产品研发全生命周期提供解决方案,支持敏捷需求规划、迭代计划跟踪、测试与质量保证、持续构建交付等全过程研发实践,助力企业提升研发效能。
cronin gitee开源任务平台。面向运维和程序开发 定时任务管理平台。接入常用第三方工具,专注于任务整合与自动化。下面开始使用流程讲解。
设置
1.基础任务组件设置
cronin 任务平台下完成对基础任务的设置。 手册:https://gitee.com/mnyuan/cronin/blob/master/work/config_set.md
2.接收任务设置
进入:头部导航 / 接收 / 添加接收规则 添加新接收任务
填写接收解析模板,模板接收并解析tapd bug 状态变更消息,以下字段填写需要满足规范要求:
[[$data := json_decode .request_body]]
[[$project := slice_filter (str_split $data.event.object_info.custom_field_four ` `) `^\s*$`]]
[[$pr := slice_filter (str_split $data.event.object_info.custom_field_five ` `) `^\s*$`]]
[[$related_user := slice_filter (str_split (printf `%s;%s;%s` $data.event.user $data.event.object_info.fixer $data.event.object_info.te) `;`) `^\s*$`]]
[[$dataset := make `[]map[string]string`]]
[[range $pr]]
[[$dataset = append $dataset (slice_combine (str_find . `https://gitee.com/(.+)/([^/]+)/pulls/(\d+)`) `` `owner` `repo` `number` `type:pr`)]]
[[end]]
[[range $project]]
[[$temp_list := map_split (slice_combine (str_find . `([^/]+)(?:.*)(?:/|\{(.*)\})`) `` `repo` `service` `type:jenkins`) `,` `service`]]
[[range $temp_list]]
[[$dataset = append $dataset .]]
[[end]]
[[end]]
{
"type": "[[$data.event.object_type]]",
"event": "[[$data.event.event_key]]",
"project": [[json_encode $project]],
"pr": [[json_encode $pr]],
"title": "[[$data.event.object_info.title]]",
"html_url": "[[printf `https://www.tapd.cn/%s/bugtrace/bugs/view/%s` $data.event.workspace_id $data.event.id]]",
"related_user_names": [[json_encode $related_user]],
"dataset": [[json_encode $dataset]]
}
字段 修改项目/分支
样例:project1{goods,order} project2/hotfix/240927{http} project3
说明:
- 字段组成:项目名称 + 分支名称 + 服务名称,多个项目以空格或回车分隔;
- 项目名称必填,任意字符串;
- 分支名称为可选,/反斜线追加于项目名称尾部;
- 服务名称为可选{}花括号包裹,多个服务逗号分隔;
字段 PR链接
样例:https://gitee.com/owner/project1/pulls/1 https://gitee.com/owner/project2/pulls/3
说明:
- 字段组成:pr创建成功后url地址,多个项目以空格或回车分隔;
1.查看详情、2.编辑、3.查看日志、4.状态变更
复制 webhook 接收地址到 tapd 的推送规则中。
3.tapd webhook 接入
官方手册:https://www.tapd.cn/help/1120003271001000703
- 登录tapd后,进入对应的协助空间;
- 点击 右上角 ⋮ 符号;
- 点击 项目设置,等待加载新页面;
- 侧边栏选择 自动化助手;
- 创建新的自动化规则;
- 直接创建,选择对象 缺陷
- 选择事件 状态流转
- 设置当 任意状态 流转至 已验证 后,进入下一步。
- 选择 添加执行操作,
- 选择对象 Webhook
- 选择事件 Webhook推送
- 补充具体的 接收Webhook请求URL;地址信息取第二步创建的接收任务地址。
- 点击下一步。
- 输入任务名称;
- 点击完成提交,推送钩子就创建好了。
业务流程
整体流程分为预设阶段和执行阶段。