接上文 最近写代码的感悟,如何摆脱搬砖
当我完成解耦adjust之后,我又开始思考,每次我更新完代码,如果通知测试去测试呢。是完整打包去测,还是只需要更新adjust key 而不需要再次打包。
使用飞书消息
公司内部通讯使用的飞书,这个工具里面有一个简单便捷的群机器人功能。在群---设置---群机器人里可以添加,然后你会获得一个post接口地址
基本使用方法如下:
axios({
url: "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx",
data:{
msg_type: "post",
content: {
post: {
"zh_cn": {
"title": "【通知】代码push通知,请注意测试",
"content": [
[
{
"tag": "at",
"user_id": "all"
},
{
"tag": "text",
"text": `\r\n【项目】${projectName}\r\n【提交人】${userName}\r\n【测试类型】${testType}\r\n-----------\r\n【更新内容】:\r\n${text}`
}
]
]
}
}
}
}
})
git webhook 触发
大部分git托管都有webhook,具体的设置不再赘述,基本上也是一个get或post接口,每次push或者merge的时候,都可以设置回调,自动给你的接口地址发送一条消息。
这时候,你需要一个web服务。
通过腾讯云开发转发消息
这时候我就想到了腾讯云开发,因为它有免费版的可以撸,也减少了配置环境的麻烦。具体大家可以参考我之前的文章腾讯cloudBase入门.
在里面新建一个云函数,webhook。index.js主要是接受一下参数
'use strict';
const {sendFeishu} =require('./request')
exports.main = async (event, context) => {
console.log(event)
let res = {}
try {
const body = JSON.parse(event.body)
res = await sendFeishu(body)
} catch (error) {
console.log('error: ', error);
}
// console.log(context)
return res
};
request.js就是发送飞书通知了
const axios = require('axios')
const Service = axios.create({
method: 'post'
})
const sendFeishu = function (body) {
const userName = body.pusher.name
const projectName = body.project.display_name
if (body.ref.indexOf('dev') === -1 || projectName !== 'web_baseline_v2') {
return true
}
const commits = body.commits
let text = ''
let testType = ''
if (commits && commits.length) {
for (const k of commits) {
text += `${k.message.replace(/(^\s*)|(\s*$)/g, '')};\r\n`
if (k.modified.length <= 2 && k.modified.includes('adjustKeys.config.js')) {
testType = '仅测试adjust'
} else {
testType = '完整测试'
}
}
}
console.log('text: ', text);
const data = {
"msg_type": "post",
"content": {
"post": {
"zh_cn": {
"title": "【通知】代码push通知,请注意测试",
"content": [
[
{
"tag": "at",
"user_id": "all"
},
{
"tag": "text",
"text": `\r\n【项目】${projectName}\r\n【提交人】${userName}\r\n【测试类型】${testType}\r\n-----------\r\n【更新内容】:\r\n${text}`
}
// {
// "tag": "a",
// "text": "Worktile地址:Test SE04-001",
// "href": "https://gpower.worktile.com/mission/projects/5c64fe098b65046aa29ea321/tasks/5efdbf279e60b004e401ad1c"
// }
]
]
}
}
}
}
console.log('data: ', data);
return Service({
url: "https://open.feishu.cn/open-apis/bot/v2/hook/xxxx",
data
})
}
module.exports = {
sendFeishu
}
最后完成的效果就是这样了,还挺不错的。把测试们也拉入群,就可以了。
结语
还是那句话,减少搬砖,多写点能让你开心的代码