原始需求
由于项目开发构建存在不同环境,故有对应不同环境分支
- 如开发环境对应
dev开发分支 - 测试环境对应
test测试分支 - 仿真环境对应
uatuat分支 - 生产环境对应
prod生产分支 master 一般作为生产线上稳定分支,维护版本和作用于根基分支来创建新分支。
在每次需求开发上线之后,需将各分支重新基于线上最新代码进行分支 重建,以保证各个分支代码统一。
已经在开发当中的分支可基于最新master 分支自行反向合并
# your branch
$ git pull
$ git merge orgin/master
由于代码仓库是基于gitlab 进行管理,每次重建各个分支都需要重复操作,便做一个可以一键重建环境分支的工具
功能
- gitlab 账号登录
- 基于仓库一键快速重建各个分支
- 支持多仓库批量重建
- 支持飞书,企业微信通知
- 查看重建日志
TODO
- 支持创建新建版本tag
- ...
代码实现
技术栈:electron-vue
思路
graph TD
获取当前账号权限下所有的仓库 --> 根据选定的仓库 --> 删除各个环境分支 --> 基于master重建各环境分支
核心源码
// 重建分支
recreateBranch(id, brancheName) {
return new Promise((resolve, reject) => {
const createBranch = () => {
axios.post(`/projects/${id}/repository/branches?branch=${brancheName}&ref=master`).then((response) => {
resolve(response);
}, (err) => {
reject(err);
});
};
axios.delete(`/projects/${id}/repository/branches/${brancheName}`).then(() => {
createBranch();
}, (err) => {
// 删除分支时404,说明该分支不存在,这种情况视为正常
if (err.response && err.response.status && err.response.status === 404) {
createBranch();
} else {
reject(err);
}
});
});
}
参考
- electron文档:electron
- electron-vue: electron-vue
- ui框架:vuesax
- gitlab操作文档: gitlab文档