需求描述:
通过判断gitlab的push事件,一旦有提交或者合并,调用webhook,触发仓库自动同步到阿里云codeup。
哪个仓库push的,就会获取这个仓库的路径同步至阿里云
思路:
- 在gitlab中添加webhook
- 利用python flask 接受webhook的请求
- 解析请求,获取gitlab 的仓库路径及名称,传入第一个api获得在阿里云上的仓库ID,通过第二个API进行仓库同步
解决方案:
参考:https://www.jianshu.com/p/27993907f191
https://linux-sh.cn/archives/637/
- webhook的添加
其中url地址是我本机的地址映射出来的地址,它可以通过外网访问。添加完成后如下:
这个地址就是当你在gitlab中发生了push事件,webhook就会向这个地址发出一个request请求。
-
搭建python flask
from flask import Flask from flask import request, jsonify, abort import subprocess app = Flask(__name__) @app.route('/webhook', methods=['GET', 'POST']) def webhook(): if request.method == 'GET': return jsonify({ 'status': 'success!'}), 200 elif request.method == 'POST': # 进入到代码目录,拉取最新代码 body =eval(str(request.get_data(),encoding='