乐趣区

关于机器人:如何使用极狐GitLab-机器人大幅提升研发效率

本文来自:
黄松 极狐 GitLab 后端工程师

研发效率对互联网 / 科技类公司来说至关重要,效率高意味着你能用更低的人力、工夫老本在市场试错,胜利的概率也会更大。

而说到研发效率的常见妨碍,次要有两点

1. 研发流程中须要大量人工决策染指,带来了高度的不确定性,导致无奈造成清晰简略的流程标准;

2. 研发流程中呈现大量反复冗余的工作,减少了工作量。

先确定好研发流程标准,再逐渐剖析辨认须要人工决策以及大量反复冗余的步骤,并尝试应用自动化程序代替 ,这就是极狐 GitLab 研发团队晋升研发效率的摸索方向。极狐 GitLab 研发团队以后次要保护着两个机器人我的项目:Triage Ops 和 Danger Bot,上面我会具体解说极狐 GitLab 是如何通过机器人来晋升研发效率的,心愿对关注研发效率的敌人们有所启发。

极狐 GitLab 团队最佳实际

自动化议题的组织与分类

议题清晰的分类标记对解决效率很有帮忙 ,在机器人自动化解决之前,根本要靠人工来辨认和揭示。咱们在解决议题分类的自动化时,先为议题 (Issue) 做了很具体的分类(应用极狐 GitLab 标记性能):

而后在流程上做出一些约定:

1. 每个议题都应该有个分类标记,不便疾速定位解决人;

2. feature 和 maintenance 这两类议题须要明确指定下一级分类。

最初,咱们开发以下性能,整个议题的自动化解决就实现了:

1. 对于标准要求的“每个议题都应该有个分类标记”,咱们开发了一个机器人揭示性能,对每个符合条件的议题做出揭示;

2. 对于“feature 和 maintenance 这两类议题须要明确指定下一级分类”,咱们也开发了一个机器人揭示性能,对符合条件的类型标记做出进一步的揭示;

3. 之前有用户认为如果间接指定一个二级标记,那么应该主动帮咱们补全他的一级标记,而且不应该再揭示须要类型标记,这个咱们也实现了。

自动化议题的工作流转

议题的工作流转状况有很多,在自动化之前,咱们须要全副手动判断解决,容易出错。在自动化之后所有都变得轻而易举

实现极狐议题自动化流转,首先咱们减少了四个 workflow 标记来辨别不同阶段状态(极狐 GitLab 议题原生的状态只有 opened 和 closed 两种,不够辨别),以下是残缺的状态流转图:

接下来,咱们开发了这些性能来让研发过程中的议题流转变得自动化:

1. 主动为 bug 类型议题打上 workflow::in confirmation 标记,并主动调配给 QA 工程师解决。保障每个 bug 解决前须要先被复现,这也是保障验收合格的前提;

2. 当议题指派给 DEV 角色时,主动给议题打上 workflow::in dev 标记,示意曾经进入开发阶段;

3. 当议题关联的合并申请准备就绪 (Ready) 时,主动给议题打上 workflow::in review 标记,示意曾经进入代码审核阶段;

4. 当议题指派给 QA 角色时,主动给议题打上 workflow::in qa 标记,示意曾经进入 QA 验收阶段。

自动化代码的审核流程

代码的审核 (Review) 在研发过程是很耗时的,进步审核效率能间接为研发周期节俭很多工夫

极狐研发流程标准里,为代码审核增加了“平安审核”的步骤,保障代码进入主分支前没有安全隐患,以下是极狐 GitLab 残缺的代码审核流程:

在自动化之前,咱们的平安审核全靠手动找人和沟通,而在自动化后机器人会主动揭示推动流程,且整个过程也会具体记录下来,不便追溯。咱们平安审核机器人的逻辑是:

1. 当代码审核者审核第一次通过时,机器人会告诉一名平安审核者来做平安审核,并打上 security-review::pending 标记;

2. 平安审核通过时,机器人会主动批改标记为 security-review::approved,维护者能够依据这个标记状态判断是否曾经实现平安审核;

3. 当代码再次被批改时,机器人会主动撤销平安审核后果从新打上 security-review::pending 标记,并且告诉上次的平安审核者再做一次平安审核。

最初,整个平安审核流程就根本被自动化了。另外代码审核还有一个须要解决的问题: 如何抉择“审核者”和“维护者”。对此咱们开发了以下性能:

1. 首先对每个合并申请进行剖析归类,常见的类型有:Backend, Frontend, QA, Document 等,一个合并可能同时合乎多个类别;

2. 机器人主动为合并申请打上对应的类别标记,比方如果代码同时批改了前后端代码,就同时打上 Backend, Frontend 两个标记;

3. 机器人生成一条“审核者举荐”的评论,为每个类别进行“审核者”和“维护者”举荐,举荐算法会依据员工的状态(销假、繁忙、被动状态)和员工与代码的关联水平进行打分,优先举荐最高分:

“平安审核”和“审核者举荐”两个问题都解决后,代码审核工作根本就曾经实现自动化了。

自动化里程碑的过渡

极狐 GitLab 研发团队的里程碑周期是每个月 18 号到下个月 17 号:

每次里程碑过渡,咱们都会有这两类固定工作须要解决:

1. 每个里程碑都有两个重要会议“Planning 会议”和“Retro 会议”,在“Planning 会议”之前咱们研发共事须要实现工作余量的评估,而在“Retro 会议”之前咱们研发共事须要总结这个里程碑做的好的以及待改良的点。这些揭示每个里程碑会产生几次,是简略且反复的,因而咱们开发机器人性能,主动在固定工夫里做出揭示。实际上程序比人更不容易脱漏和出错。

2. 议题指派到研发解决时,都应该指定好里程碑(咱们的里程碑就是版本),但并不是所有议题都会正确设置里程碑,此时咱们的机器人须要可能做到主动纠正:

  • 当一个合并申请被合并却没有里程碑时,机器人会主动依据代码上线版本设置好里程碑;
  • 当一个议题在里程碑完结后仍没有被敞开时,机器人会主动延期到下个里程碑。

在实现以上两类工作后,里程碑过渡时咱们须要手动解决的工作越来越少了。

自动化研发的相干报表

通过报表汇总一些数据和工作,是一种很不便的总结和揭示形式 。这里理论能做的报表有很多种,比方咱们极狐 GitLab 研发团队解决了(或打算解决)的报表有:

1.  里程碑回顾报表 :分类汇总上个里程碑已实现工作和未实现工作,帮忙里程碑回顾时做总结参考;

  1. 需关注议题报表 :按创立工夫和紧急水平列出一段时间内的议题,帮忙那些紧急的议题失去优先关注;
  2. 需关注合并申请报表 :按创立工夫倒序列出一段时间内的合并申请,帮忙优先关注持续时间较长的合并申请。

以上报表能够让机器人在固定的工夫主动生成,帮忙研发团队晋升效率。

对于研发效率的晋升,咱们用了五个典型例子来解说:“议题分类”、“议题流转”、“代码审核”、“里程碑过渡”和“主动报表”,实际上能做的事件还有很多,大家也能够积极探索,进一步晋升企业研发效率,让研发工作更高效!

退出移动版