通过 Gitlab API 获取项目列表

admin 2024年3月31日22:00:17评论6 views字数 1802阅读6分0秒阅读模式

内网搭建的 Gitab,项目列表并不直观,当项目多的时候需要翻页才能查看全部内容。

通过 Gitlab API 获取项目列表

希望获取项目信息后生成 markdown 列表,这样挂到 Wiki 中更直观一些。

Gitlab 运行在 docker 中,runlike 命令显示创建容器时运行的命令为:

$ runlike -p gitlabdocker run --name=gitlab         --hostname=gitlab.example.com         --mac-address=02:42:ac:11:00:02         --volume=/gitlab/config:/etc/gitlab         --volume=/gitlab/logs:/var/log/gitlab         --volume=/gitlab/data:/var/opt/gitlab         --expose=22         -p 222:222         -p 443:443         --expose=80         -p 880:880         --restart=always         --runtime=runc         --detach=true         gitlab/gitlab-ee:latest         /assets/wrapper

在 Gitlab 中创建用于获取项目列表的 Token:

通过 Gitlab API 获取项目列表

通过 Gitlab API 可以获取到项目信息:

curl --header "PRIVATE-TOKEN: your_access_token" "https://gitlab.example.com/api/v4/projects"

获取到的是一个 json 对象,单项目 json 结构如下:

{ 'created_at''2024-01-30T14:29:44.341+08:00', 'default_branch': 'main', 'description''IP 备注', 'http_url_to_repo''http://git-server.com/hyang0/ip_notes.git', 'name''ip_notes', 'ssh_url_to_repo''ssh://[email protected]:222/hyang0/ip_notes.git', 'web_url': 'http://git-server.com:880/hyang0/ip_notes',}

通过 python request 库生成项目列表:

import requestsfrom pprint import pprintimport sys# 设置 GitLab 实例的 URL 和个人访问令牌gitlab_url = "http://your-gitlab-server"access_token = "your_token"# 构建 API 请求的 URLapi_url = f"{gitlab_url}/api/v4/projects?per_page=100"# 设置请求头,包括个人访问令牌headers = {    "PRIVATE-TOKEN": access_token}try:    # 发送 GET 请求以获取项目列表    response = requests.get(api_url, headers=headers)    # 检查响应状态码    if response.status_code == 200:        # 解析响应的 JSON 数据        projects = response.json()        # 输出项目列表        for project in projects:            print(f"- [{project['name']}]({project['web_url']})")    else:        print(f"Failed to retrieve projects. Status code: {response.status_code}")except requests.RequestException as e:    print(f"Error: {e}")

输出效果:

通过 Gitlab API 获取项目列表

如果只想获取指定用户的项目,url 需要改一下:

# 指定用户的用户 ID 或用户名user_id_or_username = "hyang0"# 构建 API 请求的 URLapi_url = f"{gitlab_url}/api/v4/users/{user_id_or_username}/projects?per_page=1000"

全文完。

如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

原文始发于微信公众号(生有可恋):通过 Gitlab API 获取项目列表

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月31日22:00:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过 Gitlab API 获取项目列表https://cn-sec.com/archives/2614727.html

发表评论

匿名网友 填写信息