Skip to content

Commit 5715d39

Browse files
author
xin.xu1
committed
hotfix var name
1 parent 6212ec5 commit 5715d39

File tree

5 files changed

+57
-81
lines changed

5 files changed

+57
-81
lines changed

app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
app = Flask(__name__)
77
app.config['debug'] = True
88

9-
# 路由组
9+
# router group
1010
app.register_blueprint(git, url_prefix='/git')
1111

1212
@app.errorhandler(400)

app/gitlab_utils.py

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,16 @@ def get_merge_request_id(branch_name, project_id):
1212
:param project_id: 项目id
1313
:return: 如果分支存在 mr 则返回mrid / 如果不存在mr 则返回 ""
1414
"""
15-
# 构建API请求URL
1615
url = f"{gitlab_server_url}/api/v4/projects/{project_id}/merge_requests"
1716

18-
# 发送API请求,检查是否有与分支相关的Merge Request
1917
params = {
2018
"source_branch": branch_name,
2119
"state": "opened" # 可以根据需求选择合适的状态(opened、closed、merged等)
2220
}
21+
2322
headers = {"Private-Token": gitlab_private_token}
2423
response = requests.get(url, params=params, headers=headers)
2524

26-
# 解析JSON响应并检查是否有相关的Merge Request
2725
if response.status_code == 200:
2826
merge_requests = response.json()
2927
if len(merge_requests) > 0:
@@ -38,27 +36,19 @@ def get_merge_request_id(branch_name, project_id):
3836

3937
@retry(stop_max_attempt_number=3, wait_fixed=2000)
4038
def get_commit_list(merge_request_iid, project_id):
41-
# Create API URL for the merge request commits
4239
api_url = f"{gitlab_server_url}/api/v4/projects/{project_id}/merge_requests/{merge_request_iid}/commits"
43-
# Set the private token in the header
40+
4441
headers = {"PRIVATE-TOKEN": gitlab_private_token}
45-
46-
# Make a GET request to the API URL
4742
response = requests.get(api_url, headers=headers)
43+
4844
commit_list = []
49-
# If the response code is 200, the API call was successful
5045
if response.status_code == 200:
51-
# Get the commits from the response
5246
commits = response.json()
53-
# Iterate through the commits and print the commit ID and message
5447
for commit in commits:
5548
print(f"Commit ID: {commit['id']}, Message: {commit['message']}")
56-
# Append the commit ID to the list
5749
commit_list.append(commit['id'])
5850
else:
59-
# Log an error if the API call was unsuccessful
6051
log.error(f"Failed to fetch commits. Status code: {response.status_code}")
61-
# Return the list of commit IDs
6252
return commit_list
6353

6454

@@ -117,40 +107,38 @@ def add_comment_to_mr(project_id, merge_request_id, comment):
117107

118108

119109
@retry(stop_max_attempt_number=3, wait_fixed=2000)
120-
def get_mr_comment_info(project_id, mr_iid, ):
121-
url = f"{gitlab_server_url}/api/v4/projects/{project_id}/merge_requests/{mr_iid}/notes"
110+
def get_merge_request_comments(project_id, merge_request_iid):
111+
url = f"{gitlab_server_url}/api/v4/projects/{project_id}/merge_requests/{merge_request_iid}/notes"
122112

123-
# 发送API请求
124113
headers = {"Private-Token": gitlab_private_token}
125114
response = requests.get(url, headers=headers)
126115

127-
comments_info = ""
128-
# 解析JSON响应
116+
comments_content = ""
129117
if response.status_code == 200:
130118
comments = response.json()
131119
for comment in comments:
132-
author = comment['author']['username']
133-
comment_text = comment['body']
134-
print(f"Author: {author}")
135-
print(f"Comment: {comment_text}")
136-
comments_info += comment_text
120+
author_username = comment['author']['username']
121+
comment_body = comment['body']
122+
print(f"Author: {author_username}")
123+
print(f"Comment: {comment_body}")
124+
comments_content += comment_body
137125

138126
else:
139127
print(f" 获取mr comment 失败, Status code: {response.status_code}")
140-
return comments_info
128+
return comments_content
141129

142130

143131
@retry(stop_max_attempt_number=3, wait_fixed=2000)
144132
def get_commit_change_file(push_info):
145133
# 获取提交列表
146-
commits = push_info['commits']
147-
add_file = []
148-
modify_file = []
134+
commit_list = push_info['commits']
135+
added_files_list = []
136+
modified_files_list = []
149137
# 遍历提交
150-
for commit in commits:
138+
for commit in commit_list:
151139
added_files = commit.get('added', [])
152140
modified_files = commit.get('modified', [])
153-
add_file += added_files
154-
modify_file += modified_files
141+
added_files_list += added_files
142+
modified_files_list += modified_files
155143

156-
return add_file + modify_file
144+
return added_files_list + modified_files_list

app/gitlab_webhook.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ def question():
2020
def 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:
26+
if webhook_token == WEBHOOK_VERIFY_TOKEN:
2727
return jsonify({'status': 'success'}), 200
2828
else:
2929
return jsonify({'status': 'bad token'}), 401
@@ -33,41 +33,41 @@ def webhook():
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)

service/chat_review.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -161,36 +161,36 @@ def review_code_for_mr(project_id, merge_id, gitlab_message):
161161

162162

163163
@retry(stop_max_attempt_number=3, wait_fixed=2000)
164-
def review_code_for_add_commit(project_id, merge_id, commit_change_files, gitlab_message):
164+
def review_code_for_add_commit(project_id, merge_request_id, changed_files, gitlab_payload):
165165
"""
166166
code review for gitlab commit
167167
:param project_id:
168-
:param merge_id:
169-
:param commit_change_files:
170-
:param gitlab_message:
168+
:param merge_request_id:
169+
:param changed_files:
170+
:param gitlab_payload:
171171
:return:
172172
"""
173-
if len(commit_change_files) > 50:
173+
if len(changed_files) > 50:
174174
send_dingtalk_message_by_sign(
175-
f"project_name:{gitlab_message['project']['name']}\n备注:(增量commit)修改文件{len(commit_change_files)}个 > 50个 不进行codereview ⚠️ \n分支名:{gitlab_message.get('ref')}")
175+
f"project_name:{gitlab_payload['project']['name']}\n备注:(增量commit)修改文件{len(changed_files)}个 > 50个 不进行codereview ⚠️ \n分支名:{gitlab_payload.get('ref')}")
176176

177177
# 获取diff分支的修改文件列表
178-
merge_change_files = get_merge_request_changes(project_id, merge_id)
178+
merge_request_files = get_merge_request_changes(project_id, merge_request_id)
179179

180180
# 根据增量commit 修改文件列表过滤merge request二次修改的文件
181-
change_files = [file_content for file_content in merge_change_files if
182-
file_content["new_path"] in commit_change_files]
181+
filtered_files = [file_content for file_content in merge_request_files if
182+
file_content["new_path"] in changed_files]
183183

184-
print("😊增量commit 修改文件列表", change_files)
185-
if len(change_files) <= 50:
186-
review_info = chat_review("", project_id, "", change_files, "", "")
184+
print("😊增量commit 修改文件列表", filtered_files)
185+
if len(filtered_files) <= 50:
186+
review_info = chat_review("", project_id, "", filtered_files, "", "")
187187
if review_info:
188-
add_comment_to_mr(project_id, merge_id, review_info)
188+
add_comment_to_mr(project_id, merge_request_id, review_info)
189189
send_dingtalk_message_by_sign(
190-
f"project_name:{gitlab_message['project']['name']}\n增量修改文件个数:{len(change_files)}\ncodereview状态:✅")
190+
f"project_name:{gitlab_payload['project']['name']}\n增量修改文件个数:{len(filtered_files)}\ncodereview状态:✅")
191191

192192
else:
193193
send_dingtalk_message_by_sign(
194-
f"project_name:{gitlab_message['project']['name']}\n备注:增量commit 修改{len(change_files)} > 50个文件不进行codereview ⚠️ \n")
194+
f"project_name:{gitlab_payload['project']['name']}\n备注:增量commit 修改{len(filtered_files)} > 50个文件不进行codereview ⚠️ \n")
195195

196196

utils/logger.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,9 @@
1515
NOTSET = 0
1616
# Set the current directory
1717
current_dir = os.path.abspath(os.path.dirname(__file__))
18-
# Set the parent directory
1918
parent_dir = os.path.abspath(os.path.join(current_dir, ".."))
20-
# Set the current path
2119
CURRENT_PATH = os.path.dirname(os.path.abspath(__file__))
22-
# Set the root path
2320
ROOT_PATH = os.path.join(CURRENT_PATH, os.pardir)
24-
# Set the log path
2521
LOG_PATH = os.path.join(parent_dir, 'logs')
2622

2723

@@ -64,29 +60,21 @@ def __setFileHandler__(self, level=None):
6460

6561
def __setStreamHandler__(self, level=None):
6662

67-
# Create a stream handler
6863
stream_handler = logging.StreamHandler()
69-
# Set the format of the handler
7064
formatter = logging.Formatter(
7165
'%(asctime)s.%(msecs)03d %(levelname)s | [%(threadName)s] %(name)s [%(lineno)d] | %(filename)s %(funcName)s | %(message)s',
7266
datefmt='%Y-%m-%d %H:%M:%S')
7367
stream_handler.setFormatter(formatter)
74-
# If no level is specified, set the level to the level of the handler
68+
7569
if not level:
7670
stream_handler.setLevel(self.level)
77-
# Otherwise, set the level to the specified level
7871
else:
7972
stream_handler.setLevel(level)
80-
# Add the handler to the logger
8173
self.addHandler(stream_handler)
8274

8375
def resetName(self, name):
84-
85-
# Set the name of the logger
8676
self.name = name
87-
# Remove the existing file handler
8877
self.removeHandler(self.file_handler)
89-
# Set a new file handler
9078
self.__setFileHandler__()
9179

9280
project_name = 'chat'

0 commit comments

Comments
 (0)