使用Github webhook服務實現提PR自動檢查Flake8並在對應位置發評論

發表於2016-01-30

最近參考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的服務框架

來幾張截圖看個效果:

配置

配置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

相關文章