如何使用python-gitlab访问GitLab API?

3
根据python-gitlab文档,我需要一个名为gitlab.cfg的文件,其内容应如下所示:
[global]
default = gitlabcom
ssl_verify = true
timeout = 30


[gitlabcom]
url = https://gitlab.com/
private_token = PERSONAL_ACCESS_TOKEN
api_version = 4

然后我应该能够用列表方式列出我的项目,使用以下代码:
gitlab -c gitlab.cfg project list

然而,这给我列出了一些不属于我的项目,例如(列表会有所变化):

id: 13784565
path: 2019-08-25-form-from-classes

id: 13784562
path: faq

id: 13784561
path: curso-web-playground

id: 13784560
...

如果我使用curl,我会得到预期的结果:

curl --header "PRIVATE-TOKEN: PERSONAL_ACCESS_TOKEN" "https://gitlab.com/api/v4/groups/42424242/projects"

(其中42424242是我的群组ID。)
(在gitlab.com上,而不是一个私有托管的gitlab实例中),我找不到任何关于如何做到这一点的文档。
2个回答

1
我发现了一种取巧的方法来实现它(希望有人能提供更好的答案):
gitlab -c gitlab.cfg -o json -f projects group get --id 42424242  | jq .projects[].name

where

gitlab -c gitlab.cfg -o json -f projects group get --id 42424242

获取id为42424242的单个组的所有数据,以json格式(-o json)返回,并仅打印项目字段(-f projects,此项可省略)。返回的值如下所示。
{
    "projects": [
        {...lots of fields..., "name": "<project-name>", ...even more fields...}
        ...
    ]
}

然后我通过 jq(https://stedolan.github.io/jq/)进行管道处理。

 | jq .projects[].name

这段代码的意思是,进入名为.projects的项目中,迭代遍历列表中的所有项.projects[],然后从每个列表项中提取名称.projects[].name

结果如下:

"project1"
"project2"
"project3"
...

1

“project list”命令带有-h(帮助)标志:

(dev) go|c:\srv\tmp\gitlabtst> gitlab -c gitlab.cfg project list -h
usage: gitlab project list [-h] [--sudo SUDO] [--search SEARCH]
                           [--owned OWNED] [--starred STARRED]
                           [--archived ARCHIVED] [--visibility VISIBILITY]
                           [--order-by ORDER_BY] [--sort SORT]
                           [--simple SIMPLE] [--membership MEMBERSHIP]
                           [--statistics STATISTICS]
                           [--with-issues-enabled WITH_ISSUES_ENABLED]
                           [--with-merge-requests-enabled WITH_MERGE_REQUESTS_ENABLED]
                           [--with-custom-attributes WITH_CUSTOM_ATTRIBUTES]
                           [--page PAGE] [--per-page PER_PAGE] [--all]

列出所有“我的”项目如下所示:

gitlab -c gitlab.cfg project list --owned=1 --all

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接