当本地master分支执行push动作的时候,服务器端会自动执行master分支的clone操作(还可以执行一些自动化脚本)
原理:
git hooks就是那些在git执行特定事件(如commit、push、receive等)后触发运行的脚本。gitlab的web hooks跟git hook类似。也是当项目发生提交代码、提交tag等动作会自动去调用url,这个url可以是更新代码。或者其他操作。
写一个最简单的Python3 web服务:
from subprocess import call
from wsgiref.simple_server import make_server
import os
import time
def application(environ, start_response):
start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])
#切换到服务器项目目录
os.popen(‘cd /usr/local/service/tenant‘)
if os.path.isdir(‘ceshi‘):
os.popen(‘rm -rf ceshi‘)
time.sleep(0.5)
os.system(‘git clone xxxxxx/ceshi.git‘)
print(‘git clone finish‘)
return "Thanks for your used!"
httpd = make_server(‘‘, 8009, application) # 监听8009端口
print(‘Serving HTTP on port 8009...‘)
httpd.serve_forever()
运行这个简单的web服务(将上面代码保存为webhook.py,上传服务器后执行python webhook.py 即可运行服务【注意:应该注意是否安装Python,以及8009端口是否被占用】)
注:借鉴@星尘博主的博客,表示感谢!!,外加根据自己项目需要做了修改和遇到的一些问题处理。(如有版权问题,请告知。立马删除)
原文地址:https://www.cnblogs.com/leeInvisible/p/11595887.html