Gitlab-Robot-Jenkins 自研Chrome插件

1,753 阅读3分钟

背景

首先交代下之所以要开发 gitlab-robot-jenkins 的背景,是因为受到这个项目(github.com/shuidi-fed/…)的启发,该项目只是做了一个简单的消息机器人功能,而且使用起来不怎么顺畅,正是这样才给了我想去完善它的灵感。结合我司的情况,我自己梳理总结了一下平时在项目合并消息通知,以及构建发布流程上存在的一些问题。

总结问题如下

1:开发人员在 gitlab 新增合并请求后,需要去企业微信群里去通知相应的 code_reivew 审核人员

2: code_review 审核人员点了 merged 后,有时不会及时去提醒相应开发人员,需要当面去问。

3: 等到开发人员收到 merged 通知后,需要去登录 jenkins 选择相应的 view -> job -> branch ,然 后去构建部署。整个流程操作起来比较繁琐,而且每次构建都要走重复流程。

👆上面暴露了我司在工作效率、沟通成本上存在一些问题。经过几天的调研后,我自己开始动手开发这款 chrome extension 插件:gitlab-robot-jenkins,它的本意就是为了顺畅的把( gitlabrobotjenkins )串联起来。

大致流程如下图所示:

接下来,我跟大家分享下我在开发gitlab-robot-jenkins插件过程中遇到的一些问题和思考:

  1. 如何去更新维护 (gitlab、robot、jenkins) 这三者的数据关系?
  2. 如何去让 gitlab 和 robot 做到无缝配合?
  3. 如何去获取 jenkins 的数据,打通构建部署发布的流程?

1. 如何去更新维护 (gitlab、robot、jenkins) 这三者的数据关系?

我的做法是在Gitlab 上新增维护一个Gitlab-Robot-Jenkins项目文件:fe.json,这个文件(fe.json)只是 前端组 的同事用的关系数据,其它团队也可以类似的按照规范去维护一套关系数据。然后通过 gitlab api 方式去接入数据 (docs.gitlab.com/ee/api/repo…),这样大家更容易去维护更新。

fe.json 文件数据

2. 如何去让 gitlab 和 robot 做到无缝配合?

可以让 gitlab 和 robot 做到无缝配合就是做成 chrome extension 插件方案。

选择chrome extension的好处:我们可以去修改页面的dom结构,以及在****页面上注入文件

我们通过Gitlab-Robot-Jenkins维护的关系数据,可以给匹配上的项目打上 消息机器人 的标记。然后在 submit merge request按钮merge 按钮 安插上 消息机器人 的操作。

3. 如何去获取 jenkins 的数据,打通构建部署发布的流程?

这里就要用到 jenkins 包(www.npmjs.com/package/jen…)。只不过需要注意的是在设置 baseUrl 方式的时候,一定要使用user:token 不要使用 user.pass,要不然会遇到在调用 jenkins.job.build 会报错。

jenkins.job.build 里 name 就是构建目标job名称,parameters 里是构建所需的变量参数值,我司运维人员提前帮我们建好的。我们可以看到JK_Branch就是构建的项目分支,其它参数都是预设好的默认值,不用管了。parameters 里的参数每个公司都不一样,需要酌情设置。 我们可以看到 "jenkins_job_build_params" 里的参数就是 name 和parameters。

如果配置好后,就可以顺利拿到 view 和 job 的所有数据了,还算比较简单。

下面是我司Jenkins上所有view 和 job。

Gitlab-Robot-Jenkins 插件功能如下:

  1. Jenkins构建部署
  2. Gitlab代码审核
  3. Robot消息模板

1. Jenkins构建部署

配置上 Jenkins 用户授权地址(baseUrl)后,就可以操作 jenkins api 了。

我们可以保存 build 的构建历史生成一条卡片记录,还可以快速自定义卡片,下次我们就可以很方便的完成一键部署了。

2. Gitlab代码审核

Gitlab-Robot-Jenkins 关系数据,就是我们的 fe.json 数据。我们可以通过 gitlab api 方式去接入数据 (docs.gitlab.com/ee/api/repo…)。每个项目都需要指定一个相应的 code_review 人员,每个人都不一样。

3. Robot消息模板

如果你觉得有一点帮助,欢迎点赞👍👍👍支持一下。

目前正在找工作中···