git webhook失败-您知道为什么吗?

时间:2019-04-28 08:21:51

标签: python git webhooks continuous-deployment pythonanywhere

背景

我有一个名为DOSTUFF的{​​{3}}存储库,其中包含一个Python脚本do_stuff.py。我在本地计算机上使用bitbucket对其进行了编辑,然后通过git push origin master将更改推送到bitbucket。

我将DOSTUFF克隆到了Eclipse pydev试用帐户中。

现在,每当我在本地编辑do_stuff.py然后将git commit -m 'foo'git push origin master转换为bitbucket时,之后我都需要在pythonanywhere中手动git pull才能查看编辑在pythonanywhere中。这个pythonanywhere

目标:

我希望我的本地(Eclipse)提交到bitbucket的文件一旦从本地推送到bitbucket,就自动被拉到pythonanywhere。显然,is inefficient是必经之路。

挑战:

为此,我遵循webhooks提示,在pythonanywhere/user/me/webhook.py的bitbucket中指定了一个Webhook。不幸的是,这些说明是极简主义的,因为它们缺少适当的输入,并且没有说明为什么必须使用烧瓶(我不是专家)。

webhook.py看起来像这样:

#!/usr/bin/python2.7
# -*- coding: utf-8 -*

import git
from flask import Flask, request

# Initiate flask instance
app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    if request.method == 'POST':
        repo = git.Repo('./DOSTUFF')
        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

if __name__ == '__main__':
    app.run(port=5000,debug=True)

现在,当我git push从Eclipse到bitbucket时,提交到达bitbucket,但是pythonanywhere中的代码保持不变。换句话说,webhook.py失败。

相反,当我从pythonanywhere(bash控制台)运行webhook.py时,出现以下错误:

 * Serving Flask app "__main__" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
Traceback (most recent call last):
  File "/home/ME/webhook.py", line 21, in <module>
    app.run(port=5000,debug=True)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 943, in run
    run_simple(host, port, self, **options)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 795, in run_simple
    s.bind(get_sockaddr(hostname, port, address_family))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 98] Address already in use

问题:

此操作失败的根本原因是什么?

一旦从本地推送到bitbucket,如何正确配置一个Webhook,这对于自动git pull对pythonanywhere的更改是必要的,并且足够?

1 个答案:

答案 0 :(得分:2)

您正在尝试在PythonAnywhere控制台中启动服务器,该服务器无法正常工作,因为流量没有路由到控制台服务器。使用Web应用程序创建服务器以侦听Web挂钩。