Skip to content

Instantly share code, notes, and snippets.

@Realiserad
Created November 6, 2023 15:06
Show Gist options
  • Select an option

  • Save Realiserad/107b3207277ee5c2f57324cb5e982cd1 to your computer and use it in GitHub Desktop.

Select an option

Save Realiserad/107b3207277ee5c2f57324cb5e982cd1 to your computer and use it in GitHub Desktop.
Create OWNERS_ALIASES based on group members in GitLab
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