接上文 最近写代码的感悟,如何摆脱搬砖
当我完成解耦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 }
最后完成的效果就是这样了,还挺不错的。把测试们也拉入群,就可以了。
结语
还是那句话,减少搬砖,多写点能让你开心的代码