转载

使用Github webhook服务实现提PR自动检查Flake8并在对应位置发评论

最近参考 linty_fresh 实现了一个webhook服务, 提PR自动检查Flake8, 当有代码风格问题的时候,并在对应位置发评论

在公司内的Github企业版上, 已经用了一段时间, 比较稳定. 现在开源出来, 有兴趣的可以拿去^.^

这个项目也是我的学习asyncio的练手作品, 吐槽下 Type Hints 让代码显的好丑哇…

项目知识点

  1. Python3: 项目需要使用Python3, 建议使用Python3.5
  2. rq : 工作中有一些项目的版本库很大, 实际的检查时间也会长一些, 为了保证应用解耦和更好的提供支持, 使用rq作为任务队列
  3. aiohttp : 基于asyncio的http库, 用来调用github api, 获取对应pr信息
  4. pygit2 : 使用官方模块实现Python版本的git版本控制功能, 它的安装比较麻烦, 但是官方文档讲的很清楚
  5. Flask: 作为webhook的服务框架

来几张截图看个效果:

使用Github webhook服务实现提PR自动检查Flake8并在对应位置发评论 使用Github webhook服务实现提PR自动检查Flake8并在对应位置发评论 使用Github webhook服务实现提PR自动检查Flake8并在对应位置发评论

配置

 cat gandalf/config.py WORK_DIR = '/tmp/repositories'  # 设定克隆的项目版本库代码存放位置 FLAKE8_EXECUTABLE = '/usr/local/bin/flake8'  # 这个项目时Python3的,但是目前大部分应用还是Python2的, 所以需要Python2版本的flake8 HOST = '0.0.0.0' PORT = 8080 DEBUG = False REPORT_NO_MATCHING = False  # 没有在diff列表的文件的错误是否也报告 GITHUB_URL = 'http://github.com/'  # 行尾要加反斜杠 GITHUB_API_URL = 'https://api.github.com'  # 行尾不要加反斜杠 REPORT_CLOSEST = False # 错误出现在PR列出的文件中, 但是修改并不是此次PR中的diff里面是否报告 COMMENT_HEADER = ''  # 上述截图出现的emoji头部就是指定它, 我的设置是`COMMENT_HEADER = ':sparkles:Subject Bot:sparkles:'`   try:     from local_settings import * except ImportError:     pass 

Enjoy it

原文  http://dongweiming.github.io/blog/archives/shi-yong-github-webhookfu-wu-shi-xian-ti-przi-dong-jian-cha-flake8bing-zai-dui-ying-wei-zhi-fa-ping-lun/
正文到此结束
Loading...