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

希望获取项目信息后生成 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 可以获取到项目信息:
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://git@git-server.com: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}")
输出效果:

如果只想获取指定用户的项目,url 需要改一下:
# 指定用户的用户 ID 或用户名user_id_or_username = "hyang0"# 构建 API 请求的 URLapi_url = f"{gitlab_url}/api/v4/users/{user_id_or_username}/projects?per_page=1000"
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




