【问题标题】:How to get project IDs for all repositories in a GitLab group (python-gitlab)?如何获取 GitLab 组(python-gitlab)中所有存储库的项目 ID?
【发布时间】:2021-08-24 21:30:32
【问题描述】:

我想在我的协作 GitLab 组中的所有存储库中自动化一些流程,这(至少从 GitLab API v4 开始)需要项目 ID 而不是名称。

python-gitlab 库是否具有获取给定组的所有项目 ID 的方法?

【问题讨论】:

    标签: python gitlab


    【解决方案1】:

    原来确实有这样的方法!

    我写了一个script,它将获取所有项目的列表并提取它们的 ID:

    #### get_project_ids.py ####
    # gets all project ids for a gitlab group
    # assumes GitLab 'private_token' is set to env. variable called $GITLAB_TOKEN
    
    import gitlab, os
    
    # authenticate
    gl = gitlab.Gitlab('https://gitlab.com/', private_token=os.environ['GITLAB_TOKEN'])
    
    # set gitlab group id
    group_id = 55555
    group = gl.groups.get(group_id, lazy=True)
    
    #get all projects
    projects = group.projects.list(include_subgroups=True, all=True)
    
    #get all project ids
    project_ids = []
    for project in projects:
        project_ids.append((project.path_with_namespace, project.id))
        
    print(project_ids)
    

    如果之后需要对这些仓库进行操作,可以使用requests库通过python进行http调用,例如:

    import requests
    
    # unprotect master branch for all projects
    for pid in project_ids:
        r = requests.request('DELETE', 'https://gitlab.com/api/v4/projects/{}/protected_branches/master'.format(pid[1]), headers = {'PRIVATE-TOKEN' : token})
    

    【讨论】:

      猜你喜欢
      • 2023-02-02
      • 2022-01-20
      • 2020-08-09
      • 2018-06-11
      • 2019-04-08
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      相关资源
      最近更新 更多