Python 看门狗监控 github 存储库更改

问题描述

我需要帮助来创建 python 看门狗系统来监控 GitHub 存储库。 这个想法是:每次在仓库(主)上推送新的东西时,我想用新的提交/推送更新我在服务器上的仓库。

知道怎么做吗?我为我的英语感到抱歉。非常感谢。

解决方法

好的!我为此找到了 2 个解决方案

1.如果您拥有想要观看的存储库

  • 在您的回购页面中,转到设置
  • 点击 webhook,新建 webhook(右上角)
  • 给它你的 ip/endpoint 并根据你的喜好设置一切
  • 使用任何服务器(例如在@pigeonhands 回答中)获取通知

2.不是你的回购

import requests; 

response = requests.get("http://api.open-notify.org/astros.json").text
  • 过滤掉你想要的键,例如元素
>>> response.split("<updated>")[1].split("</updated>")[0]
'2021-08-06T19:01:53Z'
  • 创建一个循环,每隔一段时间检查一次,如果此字符串已更改,则您可以发起克隆/拉取请求或执行任何您喜欢的操作:)

我很高兴终于实现了这种能力 希望这有帮助!

,

一种解决方案是使用 github 'push' webhook。 这意味着您可以设置一个 Web 服务,让 github 可以在推送发生时告诉您,而不是不断轮询存储库的更改。

一个非常基本的烧瓶示例可能如下所示

from flask import Flask,request,abort
import hmac

app = Flask(__name__)

@app.route("/myhook",methods=['POST'])
def github_push_webhook():
    signature = request.headers.get("X-Hub-Signature")
    digest = hmac.new(GITHUB_SECRET.encode(),request.data,hashlib.sha1).hexdigest()

    if not hmac.compare_digest(signature,"sha1=" + digest):
        abort(400,"Bad Request")

    webhook_data = request.get_json()
    changed_repository = webhook_data.get('repository')
    # clone the repoisitory...