[英]Gitlab-PythonApi Merge request
如何使用 python API 调用检查 GitLab 中的合并请求状态,我想在合并前检查批准状态,一旦检查批准,则合并必须进行一些检查
import gitlab
import os
import json
Gitlab_repo = "https://gitlab.devtools.xxxx.com/"
gl = gitlab.Gitlab(Gitlab_repo, private_token='xxxx')
project = gl.projects.get(projectid)
merge_request = project.mergerequests.get(merge_request number)
print(merge_request)
Output:
{
"source_branch":"",
"id":,
"references":{
"full":"",
"relative":"",
"short":""
},
"project_id":,
"time_stats":{
"time_estimate":0,
"human_total_time_spent":"None",
"total_time_spent":0,
"human_time_estimate":"None"
},
"description":"",
"merge_when_pipeline_succeeds":,
"work_in_progress":,
"changes_count":"",
"reference":"",
"first_deployed_to_production_at":"None",
"source_project_id":,
"should_remove_source_branch":"None",
"milestone":"None",
"updated_at":"",
"user_notes_count":0,
"latest_build_finished_at":"None",
"head_pipeline":"None",
"subscribed":true,
"web_url":"",
"state":"opened",
"created_at":"",
"approvals_before_merge":"None",
"user":{
"can_merge":true
},
"iid":,
"assignee":{
"avatar_url":"None",
"web_url":"",
"id":,
"username":"",
"state":"",
"name":""
},
"author":{
"avatar_url":"None",
"web_url":"",
"id":,
"username":"",
"state":"active",
"name":""
},
"target_project_id":,
"merge_error":"None",
"task_completion_status":{
"count":0,
"completed_count":0
},
"target_branch":"master",
"squash":false,
"assignees":[
{
"avatar_url":"None",
"web_url":"",
"id":,
"username":"",
"state":"active",
"name":""
}
],
"merged_at":"None",
"has_conflicts":false,
"force_remove_source_branch":true,
"merge_status":"can_be_merged",
"labels":[
],
"pipeline":"None",
"title":"",
"merged_by":"None",
"closed_by":"None",
"sha":"",
"closed_at":"None",
"diff_refs":{
"start_sha":"",
"head_sha":"",
"base_sha":""
},
"squash_commit_sha":"None",
"latest_build_started_at":"None",
"downvotes":0,
"upvotes":0,
"discussion_locked":"None",
"merge_commit_sha":"None",
"blocking_discussions_resolved":true
}
我不熟悉 python Gitlab API 库,但可以从单独的 ZDB974A738D08CACE16 检索合并请求批准它们不在合并请求 API 中,而是在合并请求批准 API 中,这是一项付费功能。 您必须至少是高级客户才能使用 API。
通过合并请求批准 API,您可以批准 MR、取消批准或获取 MR 的批准状态。 要获取状态,请使用以下端点:
GET /projects/:id/merge_requests/:merge_request_iid/approval_state
结果将如下所示:
{
"approval_rules_overwritten": true,
"rules": [
{
"id": 1,
"name": "Ruby",
"rule_type": "regular",
"eligible_approvers": [
{
"id": 4,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"approvals_required": 2,
"users": [
{
"id": 4,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"groups": [],
"contains_hidden_groups": false,
"approved_by": [
{
"id": 4,
"name": "John Doe",
"username": "jdoe",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/0?s=80&d=identicon",
"web_url": "http://localhost/jdoe"
}
],
"source_rule": null,
"approved": true,
"overridden": false
}
]
}
这将包括 MR 批准的适用规则,如果可用,谁已经批准了 MR,以及一个简单的 boolean 指示 MR 是否被批准。
您可以在文档中阅读有关合并请求批准 API 及其其他操作的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.