【部署工具】一键打Tags,让你生产更新更高效原创
金蝶云社区-huhu115
huhu115
10人赞赏了该文章 109次浏览 未经作者许可,禁止转载编辑于2024年09月09日 11:37:34
summary-icon摘要由AI智能服务提供

本文介绍了为解决生产环境更新时打多个tag的繁琐问题,开发了一键打Tags工具。该工具基于React18和kdesign UI,利用Gitlab API实现自动打tag功能,包括列出项目提交记录、获取历史tag、自动生成新tag并鉴权调用API创建。创建完成后,通过云之家API通知相关人员。工具还支持一键查看项目tags、上线更新表地址等辅助功能。

背景:项目在更新生产环境时,经常需要打多个tag,打tag的过程并不是很友好,存在以下难点

1、项目较多,打tag过程繁琐且容易失误,容易输错tag名称,或者漏打tag

2、需要依赖开发,打tag的话包括前端项目和后端项目,打tag时需要前端和后端同时在场

3、打完tag需要通知测试和运维同学构建,比较麻烦


为了解决上述问题,特开发此一键打Tags工具,体验如下:


image.png


主要用到的技术栈是:React18框架,kdesign UI组件库


能实现上述功能主要是依赖于 gitlab 提供的一系列API,可以直接调用,API文档如下:__,我从中找到了以下几个api,集成到一键打tag工具中,分别是:

1、/api/v4/projects/${id}/repository/commits?ref=master  GET // 获取最近提交记录

2、/api/v4/projects/${id}/repository/tags  GET // 获取最近创建的tags

3、/api/v4/projects/${id}/repository/tags?tag_name=${tagName}&ref=master post // 创建新的tag

其中 id 为项目id, 项目id 通过下面的方式获取:

image.png
有了上述的API后,我们就可以设计一键打tag功能:

1、列出所有项目最后一次的提交记录,方便查看代码是否已经合并 (调用API 1)

2、获取最近一次的tag, 方便查看历史tag (调用API 2)

3、生成当天的新tag,tag规范:`tag_${year}.${month}.${day}.${count}`,如果当天未生成过tag,则从01开始,已经生成过了,则count++  (调用API 3)

4、在调用api时,需要进行鉴权,可通过令牌的方式

// 创建分支
export async function createTag(id: string, tagName: string, token: string) {
  return request(`{your_web_site}/api/v4/projects/${id}/repository/tags?tag_name=${tagName}&ref=master`, {
    data: null,
    method: 'POST',
    headers: {
      'PRIVATE-TOKEN': token,
    },
    timeout: 999999999,
  })
}

令牌放到 headers中,key值为:"PRIVATE-TOKEN",token可以通过以下方式获取,设置-》访问令牌-》添加一个访问令牌


image.png

5、tag创建完成后,需要通知到机器人,并@相关人员,可以调用云之家提供的API

/robot/webhook/send?yzjtype=0&yzjtoken=XXXXXXXXXXXXX

该API的获取方式如下:群管理员创建一个机器人

image.pngimage.png

通过post方式调用即可


好了,一个完整的打tag工具完成了,快速部署完,就可以继续鼓捣其他好玩的东西了


你还可以加一些辅助工具在这里,比如:

1、一键打开所有的项目tags

2、一键打开上线更新表地址

3、一键通知消息

4、机器人自动播报轮值情况等





赞 10