使用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。

相关推荐
free-elcmacom2 小时前
深度学习<4>高效模型架构与优化器的“效率革命”
人工智能·python·深度学习·机器学习·架构
liliangcsdn2 小时前
python模拟beam search优化LLM输出过程
人工智能·python
王琦03183 小时前
Python 函数详解
开发语言·python
胡伯来了3 小时前
13. Python打包工具- setuptools
开发语言·python
小鸡吃米…3 小时前
Python 中的多层继承
开发语言·python
中國移动丶移不动4 小时前
Python MySQL 数据库操作完整示例
数据库·python·mysql
落叶,听雪4 小时前
AI建站推荐
大数据·人工智能·python
ZAz_4 小时前
DAY 45 预训练模型
python
呆萌很4 小时前
python 项目迁移
python
清水白石0084 小时前
《requests vs httpx:Python 网络请求库的全面对比与实战指南》
网络·python·httpx