blob: b6ea3ef423a1ced269b84f79a2e6bb0c30180a95 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
"""
Extract merge request approval rules and their statuses in GitLab.
"""
import requests
BASE_URL = "https://gitlab.com/api/v4"
PRIVATE_TOKEN = "your_access_token"
PROJECT_ID = "your_project_id"
TIMEOUT = 30
URL = f"{BASE_URL}/projects/{PROJECT_ID}/approval_rules"
HEADERS = {"PRIVATE-TOKEN": PRIVATE_TOKEN}
if __name__ == "__main__":
# Get approval rules
response = requests.get(URL, headers=HEADERS, timeout=TIMEOUT)
if response.status_code == 200:
approval_rules = response.json()
for rule in approval_rules:
name = rule["name"]
approvals_required = rule["approvals_required"]
rule_type = rule["rule_type"]
protected_branches = rule["protected_branches"]
eligible_approvers = rule["eligible_approvers"]
print(f"Rule: {name}")
print(f" Approvals Required: {approvals_required}")
print(f" Rule type: {rule_type}")
for branch in protected_branches:
branch_name = branch["name"]
print(f" Protected Branch: {branch_name}")
for approver in eligible_approvers:
approver_username = approver["name"]
print(f" Eligible Approver: {approver_username}")
else:
print(
f"Failed to fetch approval rules: {response.status_code}, {response.text}"
)
|