建木小故事
2022-03-21 魏哇哇
建木小故事
作者:魏哇哇 发布时间:2022-03-21 10:30:00

在此发表一篇文章,想和大家分享一下团队在平时工作中获取信息遇到的问题以及如何通过建木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示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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、触发流程、展示结果

执行成功,健康的颜色~

企业微信收到通知消息

哈哈,我想要什么信息就加什么,把饭喂到自己的嘴边^-^,方便又快捷啊兄弟们!