jenkins的一键触发
为什么会开发这个小工具?因为我受够了在那个jenkins界面找项目,找到了项目还要找对应的分支,出错率反正不低
1. 选择一个前端工程化工具
FIE 是由阿里国际UED-体验技术部开发的一款前端工程化工具 github.com/fieteam/fie 我们团队前端工程化就是基于它很早的一个版本创建的一个分支,单独优化部署到内网使用的
2. 项目根目录放一个xxx.config.js
module.exports = {
toolkitConfig: {
group: 'fe-pages',
buildJob: {
'k8s 开发环境': {
jobName: 'dev-k8s-web-admin-xxxx', // 当前项目对应的jenkins的任务名称
buildParams: {
Branch_Tag: '%gitBranch%', // 模板渲染,执行时会读取git当前分支进行替换
SERVER: '192.168.180.251',
status: 'build',
script: 'build:prod'
},
deployParams: { // 有的项目构建和部署是分开的,所以就分了两步
Branch_Tag: '%gitBranch%',
SERVER: '192.168.180.251',
status: 'deploy'
}
}
}
}
}
复制代码
3. 项目相关命令(本地执行)
xxx 指的终端调用的快捷指令,这个可以自定义。这里还有首次使用用户认证的过程,先不详细展开讲了
xxx jenkins --go # 构建+部署
xxx jenkins --stop # 停止正在构建的任务
复制代码
4. nodejs后端相关的处理 (大概流程)
- 校验终端拼接的数据是否有效
- 检查是否有同项目任务在执行
- 查询当前用户的飞书open_id 为后续发消息做准备
- 创建redis hset数据,将前几步所有数据放进去,并设置状态
- 开始触发jenkins openAPI构建,定时任务开始论序状态
- 成功/失败/被动中断/手动中断,任务结束,删除redis列数据
类似下面这个case判断,每一步都有的一个状态,其他状态也会再更新该redis的数据,为后续状态使用
5. 正式使用过程中的截图
用的飞书网页版,一系列骚操作后才去除了水印。这个地方的卡片从创建到结束状态都是更新式的,不会发送多次卡片信息。 这个工具本来是针对我们前端团队使用的,被后端同事发现了就慢慢的都用上这个小工具了
其他业务的尝试
- 一键实现mergeRequest,并飞书通知+审核
- ci/cd,k8s跨系统构建部署步骤通知触达
- 基于飞书的事件订阅,实现飞书机器人对话消息速记