将 Github 与 Pythonanywhere 同步

man*_*iya 6 git github pythonanywhere

我想将 pythonanywhere 项目与 github 帐户同步。就像如果我在 github 上对我的项目进行更改,它会在 pythonanywhere 自动更新。原谅我是 github 的新手。

Wan*_*nni 8

我刚刚为我自己的 Pythonanywhere 项目解决了这个问题。我不想打扰 SSH 密钥,所以我使用了 Github webhooks 和在我的 pythonanywhere 帐户上运行的 Python 脚本。当源代码更新时,Python 脚本侦听 Github 发出的 webhook,并在 pythonanywhere 上执行脚本以拉入新文件。

这是场景:

  • 我在本地计算机上的 Visual Studio 中开发并将我的代码推送到我的 Github 存储库
  • Github 自动发出带有 json 文件的 post-receive webhook,我在 pythonanywhere 服务器上收听
  • 在我的 python 脚本中,我只是在 webhook URL 被触发后立即执行 pull 命令。之后,我在 pythonanyhwere 上的所有文件都是最新的

提示:

  • 如果你还没有在你的 pythonanywhere 项目上启动 git,只需打开一个 bash 控制台,导航到你的根文件夹,例如“home/username”并输入git init,然后git remote add origin https://github.com/yourusername/yourreponame.git
  • 您可以在 github 存储库的设置页面中创建 post-receive webhook
  • 我使用 GitPython 包来执行拉取请求
  • 下面是我在flask web 服务器中使用的python 代码,用于等待webhook 执行。它基本上执行一个预定义的 bash 命令,该命令在您的 pythonanywhere 文件结构中自动创建,并且位于 .bashrc 下.git/hooks/。这个 bash 文件将执行一个简单的git pull origin master

我的flask_app.py 文件的内容:

from flask import Flask, request
import git

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
    def webhook():
        if request.method == 'POST':
            repo = git.Repo('./myproject')
            origin = repo.remotes.origin
            repo.create_head('master', 
        origin.refs.master).set_tracking_branch(origin.refs.master).checkout()
            origin.pull()
            return '', 200
        else:
            return '', 400

#
# Below here follows you python back-end code
#
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请告诉我。


Von*_*onC 4

你可以考虑:

如果您只想在 pythonanywhere 上进行开发,则需要生成一个 SSH 密钥,并将公共密钥添加到您的 GitHub 帐户,如“如何将代码移入和移出 PythonAnywhere ”中的建议。