【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

GitHub 项目的同行审查自动化工具

  • 2015-07-31
  • 本文字数:2007 字

    阅读完需:约 7 分钟

作为一名程序员,肯定听说过 GitHub。作为全球最大的社交编程及代码托管网站,GitHub 允许程序员们分享和协作开发开源项目。对于微软的开源软件工程师 Felix Rieseberg 来说,他们的团队有时会在 GitHub 上,通过撰写研究案例的方式向微软内部和外部的工程师们来介绍他们所做的一些具有技术含量的工作。为了在研究案例发布之后尽量少发现错误,在将案例合并到代码库之前通过一些同行评审(peer review,PR)是必要的过程。假如用户的博客是一个 GitHub 的页面,意味着每一个后面增加到网站的 post 都是以 pull request 的形式。然而检查和跟踪 GitHub 上同行评审的 pull request 是相当繁琐的工作,因此 Felix Rieseberg 编写了一个基于 Node.js 的机器人来自动化整个流程。

管理工作流程很困难

管理同行评审工作的流程并不是一件有趣的事情。根据团队的规模,可能同时有一大堆的 pull request,如果再加上团队的工程文化比较好,会经常提前收集一些反馈信息,这就意味着 pull request 列表中会有各种不同阶段的 pull request,导致同行评审工作的流程变得困难。

有人会认为自我管理是一个很好的解决方案,的确现实中往往也是这样的。很多团队对一些未完成的 pull request 仅仅是在标题中加上一个“WIP”或“wip”的标签,任何人打开这个 pull request,它都会被更新。对一个极具创意和非常有成效的团队来说,如果是通过手动的方式检查和跟踪研究案例的状态,比如它们在哪里评审,以及它们是否已经准备好发布等,这往往是说不过去的。

自动化却很容易

代替雇人去不断检查所有 pull request,Rieseberg 决定自己开发一个自动化工具,通过注册了一个小的 Node.js 机器人,可以对以下事件作出响应:

  • 检查是否有新的 pull request 被打开或对已有的 pull request 有新的评论。
  • 如果有,机器人从 GitHub 上收集关于 pull request 的最新信息。
  • 一旦得到信息,检查 pull request 是否已被标记。如果它被标记为“no-review”或“peer-reviewed”,停止一切动作。
  • 如果还没有这样做,发表评论来对过程进行解释。
  • 如果其他人已经评论过,检查是否收到了足够的’LGTM’或’ Looks good to me! “评论。如果收到,更新标签。
  • 如果机器人被配置为允许自动合并 pull request,让 GitHub 合并它。如果 pull request 是不可以合并的,GitHub 会自动拒绝。

在这种情况下,这个机器人还只是单一接口的小规模应用程序:

复制代码
http://botaddress.com/pullrequests

一个 GET HTTP 请求为打开的 pull request 检查配置,而 POST HTTP request 需要一个 GitHub 风格 JSON 有效载荷,并且仅仅处理提到的 pull request。

自行构建机器人

除了简要介绍他们的自动化机器人,Felix 还为读者提供了如何自行构建机器人的方法。如果想查看代码库中 pull request 的同行评审,在开始之前,需要做一些必要的准备工作:

为机器人创建一个 GitHub 用户

机器人需要一个 GitHub 用户来与 GitHub 交互。在 GitHub 网页上,可以使用已有的用户,或者从众多的机器人( Terminator,Tinman,Bender )中选择一个,创建一个新用户。
虽然机器人使用用户名 / 密码组合就可以正常工作,但我们还是建议建立一个 OAuth2 令牌。 GitHub 上有 API 速率限制, OAuth 认证的机器人可以获得更高一些的速率。

部署机器人

如果是使用 Azure,建立一个机器人大约只需要一分钟。只需导航到同行评审机器人的代码库,并点击“Deploy to Azure '按钮。 Azure 的部署向导会自动为用户创建一个网站,而且还会为配置机器人设置环境变量。

如果是使用其他平台,确保是在运行的节点(至少在 0.10.x)上。然后,通过直接编辑 config.js 或通过设置环境变量来设置配置。选项如下:

  • User 拥有代码库的用户 / 组织
  • repo 代码库(研究案例)
  • botUser 机器人的 GitHub 用户名
  • botPassword 机器人的 Github 密码
  • labelReviewed 表示获得足够的同行评审的标签名
  • labelNeedsreview 表示没有同行评审的标签名
  • reviewsNeeded 需要的评审数量
  • instructionsComment 当一个新 PR 打开,机器人发布的评论,如果在评论中使用 reviewsNeeded,它会自动替换为需要的评审数量
  • mergeOnReview(默认值:false) 如果设置为 true,机器人会自动合并 PR,并迅速将其当做评审过的 PR
  • pullRequestsStatus(默认:open)pull request 状态。选项包括:all|open|closed
  • oauth2token 如果设置,将使用 OAuth 令牌代替用户名 / 密码组合对机器人验证。
  • excludeLabels 如果设置,机器人会自动忽略带有“no-review”、“ i-hate-reviews”标签的 PR。

配置完成后,使用 npm start 或 node ./bin/www 启动机器人。这样,一个机器人就可以帮助管理同行评审工作流了,而程序员则可以将精力放在更需要他们的地方。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-07-31 01:293208
用户头像

发布了 268 篇内容, 共 118.4 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

后 Cookie 时代如何实现精准的用户运营与管理?

Authing

低代码 Idaas 用户管理 Authing 用户运营

行云管家祝各位程序员节日快乐!

行云管家

程序员 程序员节

浅谈RabbitMQ的延迟队列

高端章鱼哥

RabbitMQ 延迟队列

LLM 新缺陷曝光,自我纠正成功率仅 1%;苹果超 95% 产品仍在中国制造丨 RTE 开发者日报 Vol.72

声网

深度学习应用开发示例之“定位编码”

矩视智能

深度学习 机器视觉

NFTScan | 10.16~10.22 NFT 市场热点汇总

NFT Research

NFT NFTScan nft工具

美国站群服务器配置指南,帮你轻松管理多个网站

一只扑棱蛾子

站群服务器 美国服务器 美国站群服务器

面对“双十一”这样的大促,品牌方还能多做些什么?

博文视点Broadview

2023年行云绽放&傲冠股份厨艺比拼团建活动圆满结束

行云管家

行云 团建 傲冠

合约开发 - DAPP开发 - swap开发

西安链酷科技

swap链游 合约交易所开发 dapp开发 NFT开发

FC红白机游戏600合集 for mac

展初云

Mac 游戏 FC 红白机游戏

OpenHarmony Meetup成都站招募令

OpenHarmony开发者

OpenHarmony

IDEA工具第二篇:自定义Java方法注释模板 | 京东云技术团队

京东科技开发者

Java IDEA 参数 注释 企业号10月PK榜

测吧(北京)科技有限公司项目总监王雪冬一行访问计算机学院探讨合作

霍格沃兹测试开发学社

一次单据图片处理的优化实践 | 京东物流技术团队

京东科技开发者

性能优化 图片处理 pdfbox 企业号10月PK榜

Mac电脑音频修复和增强推荐 iZotope RX 10最新激活版

胖墩儿不胖y

Mac软件 音频修复 音频增强软件

2024深圳电子展

AIOTE智博会

电子展 深圳电子展 电子信息展 深圳电子信息展

【CIKM 2023】扩散模型加速采样算法OLSS,大幅提升模型推理速度

阿里云大数据AI技术

算法

自定义MyBatis拦截器更改表名

emanjusaka

Java mybatis

四川华新学院在“火焰杯”软件测试高校就业选拔赛取得佳绩

测试人

软件测试

飞码LowCode前端技术系列(一):数据结构设计 | 京东云技术团队

京东科技开发者

低代码 营销 企业号10月PK榜 web页面搭建

仅需2分钟 让智慧助手小艺用你的声音时刻陪伴老人

最新动态

第5期 | GPTSecurity周报

云起无垠

中国大模型开源创新与合作的新篇章 | 2023 CCF中国开源大会

OpenI启智社区

开源 大模型 OpenI启智社区 CCF中国开源大会 鹏城·脑海大模型

文心一言 VS 讯飞星火 VS chatgpt (119)-- 算法导论10.3 4题

福大大架构师每日一题

福大大架构师每日一题

天翼云以领先云网算力,为工业信息化筑牢算力底座

Geek_2d6073

Perforce发布《2023游戏开发与设计现状报告》,洞察游戏行业的改变与2023年最令人兴奋的行业动向

龙智—DevSecOps解决方案

游戏开发

软件测试|第二届、第三届<火焰杯>软件测试开发选拔赛河北赛区颁奖典礼落幕

霍格沃兹测试开发学社

ARB链(Arbitrum)ARBT代币合约质押挖矿系统开发(源码技术搭建)

l8l259l3365

手把手|支付宝异步通知如何使用

盐焗代码虾

安全 支付宝 异步通知

Mac电脑屏幕录像 Iris最新直装激活版

mac大玩家j

录屏软件 Mac软件 Mac好用的屏幕录制软件

GitHub项目的同行审查自动化工具_GitHub_张天雷_InfoQ精选文章