需求场景

日常工作中习惯使用企业微信、钉钉等实时通讯工具来交流项目的进展、问题 等内容, 在群聊中实时收到这些信息,以达到信息透明和快速处理处理的目的。JIRA 作为一个事务追踪和项目管理工具, 每天会有大量的项目动态产生(比如 需求提出、Bug上报、任务完成、版本发布等信息),我们也需要将项目信息如果能实施的分发到工作群(比如某个团队或项目的工作) 

钉钉官方已经提供了JIRA机器人,可以在JIRA上配置webhook将消息发送到群聊中的JIRA机器人

企业微信没有提供这样的第三方集成的应用, 只提供了机器人的API接口, 关于接口的使用有自己定义的规范, JIRA的webhook消息内容不能直接发送到企业微信的机器人接口

解决方案

在 JIRA 和 企业微信中间加一个 转换器

  1. JIRA 的事件通过 Webhook (在系统Webhook中配置)发给 Conveter转转器
  2. Converter 接收JIRA的消息, 转换成企业微信兼容的格式,再调用企业微信机器人的接口发给企业微信
  3. 企业微信通过群聊机器人发送消息
%%{init: {'theme':'default'}}%% graph LR; JIRA--JIRA Webhook-->C(Converter); C(Converter)--Invoke WeChat api-->WeChat;

方案特点:

  • 和JIRA和企业微信耦合度小
  • 灵活配置,发送什么消息到哪个群由JIRA的Webhook设置实现
  • 部署灵活
    • 可以使用集中的SaaS服务(由devpod提供)
    • 将Converter部署用户侧,适用场景
      • JIRA无法直接访问外网(调用企业微信需要访问公网), 让Converter 来做代理和转换, 只要Converter能访问外网即可
      • JIRA用户规模大,业务量大
      • 对消息安全有进一步要求


配置实现

需要在企业微信测添加聊天机器人和JIRA侧添加WebHook

企业微信添加群机器人

在手机的企业微信客户端操作,步骤如下


1.进入企业微信群聊设置, 打开群机器人设置


2.  添加群机器人,给机器人起个名字, 如 Jira, 也可以更改一个头像




3.  copy 这个 WebHook地址, 这个WebHook地址其实包含了两部分内容, 第一部分是,  webhook的地址“如 https://qyapi.weixin.qq.com/cgi-bin/webhook/send” , 第二部分是 key 如“key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa”  , 这个key 其实就是群聊机器人的地址+token, 不要轻易透露给别人,拿到这个key 就能通过这个群聊机器人发消息了

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa
CODE




关于企业微信群机器人的详细信息请参见 企业官方文档

JIRA中添加WebHook

JIRA 管理员在  系统-》WebHooks 配置,每个群机器人需要添加一个WebHook, 有这么几个配置要素

  • URL:  配置成  https://k8.devpod.cn/webhook/jira2wechat?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa    , 这个地址分为两部分
    • 绿色部分地址为 Converter的地址,这里是由devpod.cn 提供的公共服务的Converter,可以免费使用,为安全起见建议使用https的协议; 如果需要单独部署请联系 support@devpod.cn
    • 橙色部分key 为上一步从企业微信机器人添加后得到的key
  • JQL :决定改了哪些issue的变化要往这些issue 上发,您可以自己定义 比如 ”project = "Android App" AND type = Bug“ 表示项目 Android App 上的 Bug 事件要触发 WebHook
  • 事件: 哪些事件要触发WebHook。 目前Converter的事件解析有
    • 评论: 创建
    • 问题: 创建、 更新


创建后的JIRA 的 WebHook如下:



好了,现在可以测试一下 企业中收到JIRA事件的效果了


效果示例