使用GitLab Python库判断一个mr是否完全approval

python 复制代码
import gitlab

# GitLab server URL and personal access token
gitlab_url = 'https://gitlab.example.com'
private_token = 'your_personal_access_token'

# ID of the project and merge request
project_id = 1234
merge_request_iid = 5678

# Create GitLab client
gl = gitlab.Gitlab(gitlab_url, private_token)

# Get the project
project = gl.projects.get(project_id)

# Get the merge request
mr = project.mergerequests.get(merge_request_iid)

# Get the approval status of the merge request
all_approved = mr.approval_state.get()

for rule in all_approved.rules:
   if rule.get('approved')==False:
       print("Not all approvals received.")
       break
else:
	print("All approvals received.")

mr.approval_state.get()返回的格式:

bash 复制代码
<class 'gitlab.v4.objects.merge_request_approvals.ProjectMergeRequestApprovalState'> => {
  'approval_rules_overwritten': True,
  'rules': [
    {
      'id': 12345,
      'name': 'All Members',
      'rule_type': 'any_approver',
      'eligible_approvers': [],
      'approvals_required': 1,
      'users': [],
      'groups': [],
      'contains_hidden_groups': False,
      'section': None,
      'source_rule': {
        'approvals_required': 1
      },
      'overridden': False,
      'code_owner': False,
      'approved_by': [
        {
          'id': 121,
          'username': 'xxx',
          ......
        },
        {
          'id': 122,
          'username': 'xxx',
          ......
        }
      ],
      'approved': True
    },

所有rule的approved为True则表明全部approved。

相关推荐
倔强青铜三几秒前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试
用户2519162427113 小时前
Python之语言特点
python
刘立军4 小时前
使用pyHugeGraph查询HugeGraph图数据
python·graphql
数据智能老司机7 小时前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机8 小时前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
c8i10 小时前
django中的FBV 和 CBV
python·django
c8i10 小时前
python中的闭包和装饰器
python
这里有鱼汤13 小时前
小白必看:QMT里的miniQMT入门教程
后端·python
TF男孩1 天前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
该用户已不存在1 天前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust