Сторожевой таймер Python для мониторинга изменений в репозиториях github

Мне нужна помощь в создании системы сторожевого таймера Python для мониторинга репозитория GitHub. Идея такова: каждый раз, когда что-то новое добавляется в репозиторий (мастер), я хочу обновить репозиторий на сервере новыми коммитами/пушами.

Любая идея, как это сделать? Прошу прощения за мой английский. Спасибо заранее.


person Agosti Alessio    schedule 24.03.2021    source источник


Ответы (1)


Одним из решений является использование github. нажмите вебхук. Это означает, что вместо того, чтобы постоянно опрашивать репозиторий на наличие изменений, вы можете настроить веб-службу, где 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...
person pigeonhands    schedule 24.03.2021