22import threading
33from os import abort
44from flask import Blueprint , request , jsonify
5- from config .config import WEBHOOK_VERIFY_TOKEN
5+ # from config.config import WEBHOOK_VERIFY_TOKEN
66from service .chat_review import review_code , review_code_for_mr , review_code_for_add_commit
77from utils .logger import log
88from app .gitlab_utils import get_commit_list , get_merge_request_id , get_commit_change_file
@@ -20,54 +20,54 @@ def question():
2020def webhook ():
2121 if request .method == 'GET' :
2222 # 获取gitlab的webhook的token
23- verify_token = request .headers .get ('X-Gitlab-Token' )
23+ webhook_token = request .headers .get ('X-Gitlab-Token' )
2424
2525 # gitlab的webhook的token验证
26- if verify_token == WEBHOOK_VERIFY_TOKEN :
27- return jsonify ({'status' : 'success' }), 200
28- else :
29- return jsonify ({'status' : 'bad token' }), 401
26+ # if webhook_token == WEBHOOK_VERIFY_TOKEN:
27+ return jsonify ({'status' : 'success' }), 200
28+ # else:
29+ # return jsonify({'status': 'bad token'}), 401
3030
3131 elif request .method == 'POST' :
3232 """
3333 webhook的主要逻辑,获取gitlab的推送信息
3434 """
3535 # 获取gitlab的推送信息
36- gitlab_message = request .data .decode ('utf-8' )
36+ gitlab_payload = request .data .decode ('utf-8' )
3737 # 将gitlab的推送信息转换为字典
38- gitlab_message = json .loads (gitlab_message )
39- log .info (f"🌈 :{ gitlab_message } " )
38+ gitlab_payload = json .loads (gitlab_payload )
39+ log .info (f"🌈 :{ gitlab_payload } " )
4040 # 获取项目的类型
41- object_kind = gitlab_message .get ('object_kind' )
41+ event_type = gitlab_payload .get ('object_kind' )
4242
4343 # 首次发起mr时候触发
44- if object_kind == 'merge_request' and gitlab_message .get ("object_attributes" ).get (
45- "state" ) == "opened" and gitlab_message .get ("object_attributes" ).get ("merge_status" ) == "preparing" :
44+ if event_type == 'merge_request' and gitlab_payload .get ("object_attributes" ).get (
45+ "state" ) == "opened" and gitlab_payload .get ("object_attributes" ).get ("merge_status" ) == "preparing" :
4646 # 验证通过,获取commit的信息
47- log .info ("首次merge_request " , gitlab_message )
47+ log .info ("首次merge_request " , gitlab_payload )
4848 # 获取项目id
49- project_id = gitlab_message .get ('project' )['id' ]
49+ project_id = gitlab_payload .get ('project' )['id' ]
5050 # 获取merge request ID
51- merge_id = gitlab_message .get ("object_attributes" )["iid" ]
51+ merge_request_id = gitlab_payload .get ("object_attributes" )["iid" ]
5252
53- thread = threading .Thread (target = review_code_for_mr , args = (project_id , merge_id , gitlab_message ))
53+ thread = threading .Thread (target = review_code_for_mr , args = (project_id , merge_request_id , gitlab_payload ))
5454 thread .start ()
5555
5656 return jsonify ({'status' : 'success' }), 200
57- elif object_kind == 'push' :
57+ elif event_type == 'push' :
5858 # 获取merge request ID
59- merge_id = get_merge_request_id (gitlab_message .get ('ref' ).split ("/" )[- 1 ], gitlab_message .get ("project_id" ))
59+ merge_request_id = get_merge_request_id (gitlab_payload .get ('ref' ).split ("/" )[- 1 ], gitlab_payload .get ("project_id" ))
6060 # 获取项目id
61- project_id = gitlab_message .get ('project' )['id' ]
62- if not merge_id :
61+ project_id = gitlab_payload .get ('project' )['id' ]
62+ if not merge_request_id :
6363 send_dingtalk_message_by_sign (
64- f"Project_Name:{ gitlab_message ['project' ]['name' ]} \n 备注:分支 { gitlab_message .get ('ref' )} 没有处于open状态的 Merge Request 不进行 Code Review。" )
65- return jsonify ({'status' : f'非存在MR分支,{ gitlab_message } ' }), 200
64+ f"Project_Name:{ gitlab_payload ['project' ]['name' ]} \n 备注:分支 { gitlab_payload .get ('ref' )} 没有处于open状态的 Merge Request 不进行 Code Review。" )
65+ return jsonify ({'status' : f'非存在MR分支,{ gitlab_payload } ' }), 200
6666
67- change_files = get_commit_change_file (gitlab_message )
67+ changed_files = get_commit_change_file (gitlab_payload )
6868
6969 thread = threading .Thread (target = review_code_for_add_commit ,
70- args = (project_id , merge_id , change_files , gitlab_message ))
70+ args = (project_id , merge_request_id , changed_files , gitlab_payload ))
7171 thread .start ()
7272
7373 return jsonify ({'status' : 'success' }), 200
@@ -76,7 +76,7 @@ def webhook():
7676 log .error ("不是merge" )
7777 return jsonify ({'status' : '操作不为push' }), 200
7878
79- return jsonify ({'status' : f'未匹配到规则,{ gitlab_message } ' }), 200
79+ return jsonify ({'status' : f'未匹配到规则,{ gitlab_payload } ' }), 200
8080
8181 else :
8282 abort (400 )
0 commit comments