问题描述
我需要帮助来创建 python 看门狗系统来监控 GitHub 存储库。 这个想法是:每次在仓库(主)上推送新的东西时,我想用新的提交/推送更新我在服务器上的仓库。
知道怎么做吗?我为我的英语感到抱歉。非常感谢。
解决方法
好的!我为此找到了 2 个解决方案
1.如果您拥有想要观看的存储库
- 在您的回购页面中,转到设置
- 点击 webhook,新建 webhook(右上角)
- 给它你的 ip/endpoint 并根据你的喜好设置一切
- 使用任何服务器(例如在@pigeonhands 回答中)获取通知
2.不是你的回购
-
获取您想要的网址,即 https://github.com/fire17/gd-xo/
-
在末尾添加 /commits/master.atom 如:
-
使用您想要获取该页面内容的任何库,例如:
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...