使用Github webhook服务实现提PR自动检查Flake8并在对应位置发评论
admin
2023-07-31 00:38:23
0

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

项目地址是: gandalf

在公司内的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的服务框架

来几张截图看个效果:

配置

12345678910111213141516 cat gandalf/config.pyWORK_DIR = \’/tmp/repositories\’  # 设定克隆的项目版本库代码存放位置FLAKE8_EXECUTABLE = \’/usr/local/bin/flake8\’  # 这个项目时Python3的,但是目前大部分应用还是Python2的, 所以需要Python2版本的flake8HOST = \’0.0.0.0\’PORT = 8080DEBUG = FalseREPORT_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

配置webhook

需要在github的项目/组织设置页,找到Webhooks, 然后Add webhook

  1. Payload URL输入 http://192.168.1.1:28030/api/hooks # 或者你跑起来web服务的地址
  2. 选择事件 ,Let me select individual events. 然后勾选Pull Request

如图:

Enjoy it


相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...