背景
首先交代下之所以要开发 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,它的本意就是为了顺畅的把( gitlab
、 robot
、 jenkins
)串联起来。
大致流程如下图所示:
接下来,我跟大家分享下我在开发gitlab-robot-jenkins插件过程中遇到的一些问题和思考:
- 如何去更新维护 (gitlab、robot、jenkins) 这三者的数据关系?
- 如何去让 gitlab 和 robot 做到无缝配合?
- 如何去获取 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 插件功能如下:
- Jenkins构建部署
- Gitlab代码审核
- 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消息模板
如果你觉得有一点帮助,欢迎点赞👍👍👍支持一下。
目前正在找工作中···