本文来自:
黄松 极狐 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. 里程碑回顾报表 :分类汇总上个里程碑已实现工作和未实现工作,帮忙里程碑回顾时做总结参考;
- 需关注议题报表 :按创立工夫和紧急水平列出一段时间内的议题,帮忙那些紧急的议题失去优先关注;
- 需关注合并申请报表 :按创立工夫倒序列出一段时间内的合并申请,帮忙优先关注持续时间较长的合并申请。
以上报表能够让机器人在固定的工夫主动生成,帮忙研发团队晋升效率。
对于研发效率的晋升,咱们用了五个典型例子来解说:“议题分类”、“议题流转”、“代码审核”、“里程碑过渡”和“主动报表”,实际上能做的事件还有很多,大家也能够积极探索,进一步晋升企业研发效率,让研发工作更高效!