Skip to content

Instantly share code, notes, and snippets.

@RunsFor
Created May 6, 2020 10:18

Revisions

  1. RunsFor created this gist May 6, 2020.
    35 changes: 35 additions & 0 deletions list_gitlab_projects.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,35 @@
    #!/usr/bin/env python3

    import json
    import gitlab

    gl = gitlab.Gitlab('http://gitlab.com', private_token="<put your private token here>")
    GROUP_ID = '1234567890'
    total_projects_count = 0


    def get_projects_with_shared_runners_enabled(group_id):
    global total_projects_count

    group = gl.groups.get(group_id)
    enabled = []
    print(f"Fetching groups for group {group.attributes['full_name']}")
    for subgroup in group.subgroups.list(all=True):
    enabled += get_projects_with_shared_runners_enabled(subgroup.get_id())

    group_projects = group.projects.list()
    total_projects_count += len(group_projects)

    enabled += [
    {'Name': p.attributes['name_with_namespace'], 'ID': p.attributes['id']}
    for p in group_projects
    if p.attributes['shared_runners_enabled']
    ]

    return enabled


    projects = get_projects_with_shared_runners_enabled(GROUP_ID)

    print(f"Total projects with enabled shared runners: {len(projects)}/{total_projects_count}")
    print(json.dumps(projects, indent=' '))