欢迎光临
我们一直在努力

webhook自定义服务器,使用 python 做一个 webhook 服务器

通常,可以使用gitlab给自己搭建一个代码托管平台,或者使用github等流行的代码管理平台维护自己的代码,当需要在服务器上部署项目的时候,一个简单的做法就是在服务器上使用 git clone

git pull

复制代码

命令拉取最新的代码并进行部署。可能只有两行的命令,但每次更新都需要手动操作依然很麻烦。

今天介绍一个小工具,可以更高效便捷地完成自动拉取代码并部署的功能。 不是jenkins,而是使用python自己编写一个小的webhook服务。

前提是你的机器具有公网IP地址,或者是可以从代码托管平台访问到的某个机器(内网环境)。

首先,确保机器上已经安装有python并已经安装了pip。

执行 pip install glhooks

复制代码

glhooks是小巧精悍的一个库,经过简单的配置就可以完成webhook的功能。下面我们来看一下如何配置config.ini文件。 [server]

host=gitlab.example.com

log_file=/home/myname/Downloads/webhookfile.log

; email=myname@example.com

[mailer]

user=my.name@example.com

password=123123

host=smtp.example.com

security=plain

sender=Gitlab Webhook

; list of repositories

[http://gitlab.example.com/myname/AwesomeProject]

path=/home/myname/webhook/Awesomeproject/

branch=master

[http://gitlab.example.com/myname/YetAnotherAP]

path=/home/myname/webhook/YetAnotherAP/

branch=master

复制代码

上面的配置当中,修改host为自己的代码托管平台网址,并修改自己对应的项目repository网址,本地path为运行该webhook 服务的机器上的路径,可以自行指定。

启动命令是 python -m glhooks /home/myname/webhook/config.ini

复制代码

指定配置文件为上述的config.ini文件。默认会启用该server的8000端口。

现在已经可以使用这个工具来自动pull代码了。

如果在自动pull代码之后还有别的操作,比如将代码复制到指定路径当中进行编译等操作,可以通过手动修改glhooks的库文件的方式实现。具体方法如下: class GitlabWebhookHandler(BaseHTTPRequestHandler):

RESPONSE_MESSAGE = “Python GitLab webhook handler”

@property

def context(self):

return self.server.context

def do_POST(self):

data_size = int(self.headers[“Content-Length”])

data = self.rfile.read(data_size)

json_data = json.loads(data.decode(“utf-8”))

try:

self.handle_commits_data(json_data)

except Exception as e:

# self._send_email(json_data, e)

self._send_response_message(self.RESPONSE_MESSAGE, status_code=500)

else:

self._send_response_message(self.RESPONSE_MESSAGE)

os.system(r”””YOUR BASH COMMAND HERE”””)

复制代码

默认的,glhooks的文件会被放在 /usr/local/lib/python2.7/dist-packages/glhooks/

复制代码

路径当中,按照上文的样子修改server.py文件的Handler函数,在该函数的最后一行加上os.system()调用即可。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:webhook自定义服务器,使用 python 做一个 webhook 服务器
文章链接:https://www.jmwz.net/1231.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)