在此发表一篇文章,想和大家分享一下团队在平时工作中获取信息遇到的问题以及如何通过建木 CI 来解决问题的经历。
不知道大家有没有遇到过这样的问题,需求那边的伙伴修改了用例、原型,然后同步信息给开发,开发再去获取信息,由于用例、原型的文档是下载到了本地,所以有时候也会忘记通过 git pull 去更新,这对于开发来说增加了获取信息的门槛,造成了信息流程障碍。对于这种情况,我就在想,为什么不把这些东西放到服务器上呢?需求那边更新完成之后,简单的打个 tag,然后触发流程,最后把需要的信息直接发送给我们,这样会不会更加简单呐!
下面给大家分享一下我是如何运用建木 CI 去简单地实现这个想法的。
1、建木 Hub 上查看使用到的节点官方文档
ssh 执行命令节点:通过 ssh 连接到指定主机执行对应的命令。
节点文档:
https://jianmuhub.com/_/ssh_cmd
企业微信通知节点:通过企业微信机器人发送消息通知,当前支持的消息类型包括 test,markdown,image,news。
节点文档:
https://jianmuhub.com/_/qywx_notice
2、业务流程
我在这里通过接收 git 的 tag 事件来触发流程,类型为 webhook,之后再通过 JSONPath 语法来解析事件消息,获取需要的信息来判断 tag 状态(主要是为了避免删除 tag 时也去触发业务流程)。DSL 示例如下:
name: 需求原型
trigger:
type: webhook
param:
- name: tag
type: STRING
exp: $.body.json.ref
- name: object_kind
type: STRING
exp: $.body.json.object_kind
- name: before
type: STRING
exp: $.body.json.before
- name: username
type: STRING
exp: $.body.json.user_name
- name: url
type: STRING
exp: $.body.json.project.git_http_url
only: (${trigger.object_kind} == "tag_push" && ${trigger.before}== "0000000000000000000000000000000000000000")
pipeline:
# ssh节点
ssh_cmd:
type: "ssh_cmd:1.0.1"
param:
ssh_port: "22"
ssh_cmd: "cd /root/Prototype/release; git pull"
ssh_ip: "xxx.xx.xx.xx"
ssh_private_key: "((ssh.private))"
ssh_user: "root"
# 企业微信通知节点
qywx_notice:
type: "qywx_notice:1.2.1"
param:
mentioned_mobile_list: "[\"@all\"]"
bot_webhook_url: "((chatbot.webhook))"
text_content: "需求原型发版\\n版本:${trigger.tag} \\n app原型地址:http://xxxx.xx.xx.xx:xxxx \\n 平台原型地址:http://xxxx.xx.xx.xx:xxxx \\n 需求用例git地址:${trigger.url} \\n 更新人:${trigger.username}"
msgtype: "text"
复制代码
3、触发流程、展示结果
执行成功,健康的颜色~
企业微信收到通知消息
哈哈,我想要什么信息就加什么,把饭喂到自己的嘴边^-^,方便又快捷啊兄弟们!
本文为建木博主「魏哇哇」的原创投稿文章,转载请联系授权。
项⽬官⽹:https://jianmu.dev
项⽬托管:https://gitee.com/jianmu-dev
项⽬文档:https://docs.jianmu.dev
评论