Created
November 6, 2023 15:06
-
-
Save Realiserad/107b3207277ee5c2f57324cb5e982cd1 to your computer and use it in GitHub Desktop.
Create OWNERS_ALIASES based on group members in GitLab
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import requests | |
| import json | |
| import yaml | |
| HEADERS = { "PRIVATE-TOKEN": "<put token here>" } | |
| GITLAB_SERVER = "gitlab.com" | |
| MAINTAINER_ACCESS_LEVEL = 40 | |
| REPORTER_ACCESS_LEVEL = 20 | |
| def get_groups(): | |
| return json.loads(requests.get( | |
| url="https://{}/api/v4/groups".format(GITLAB_SERVER), | |
| headers=HEADERS).text) | |
| def get_members(group_id, min_access_level): | |
| members = json.loads(requests.get( | |
| url="https://{}/api/v4/groups/{}/members".format(GITLAB_SERVER, str(group_id)), | |
| headers=HEADERS).text) | |
| return [member["username"] for member in members if member['access_level'] >= min_access_level] | |
| def normalize(name): | |
| return name.lower().replace(" ", "-") | |
| approvers = [ (normalize(group["name"]) + "-approvers", get_members(group["id"], MAINTAINER_ACCESS_LEVEL)) for group in get_groups() ] | |
| reviewers = [ (normalize(group["name"]) + "-reviewers", get_members(group["id"], REPORTER_ACCESS_LEVEL)) for group in get_groups() ] | |
| print(yaml.dump({ | |
| "aliases": {k: v for (k, v) in approvers + reviewers} | |
| })) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment