告别麻烦的重建流程 - 基于gitlab一键环境分支重建工具

784 阅读1分钟

原始需求

由于项目开发构建存在不同环境,故有对应不同环境分支

  • 如开发环境对应 dev 开发分支
  • 测试环境对应 test 测试分支
  • 仿真环境对应 uat uat分支
  • 生产环境对应 prod 生产分支
  • master 一般作为生产线上稳定分支,维护版本和作用于根基分支来创建新分支。

在每次需求开发上线之后,需将各分支重新基于线上最新代码进行分支 重建,以保证各个分支代码统一。 已经在开发当中的分支可基于最新master 分支自行反向合并

# your branch
$ git pull
$ git merge orgin/master

由于代码仓库是基于gitlab 进行管理,每次重建各个分支都需要重复操作,便做一个可以一键重建环境分支的工具

功能

  • gitlab 账号登录
  • 基于仓库一键快速重建各个分支
  • 支持多仓库批量重建
  • 支持飞书,企业微信通知
  • 查看重建日志

TODO

  • 支持创建新建版本tag
  • ...

代码实现

技术栈:electron-vue

1.png

思路

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);
      }
    });
  });
}

参考