内网搭建的 Gitab,项目列表并不直观,当项目多的时候需要翻页才能查看全部内容。
希望获取项目信息后生成 markdown 列表,这样挂到 Wiki 中更直观一些。
Gitlab 运行在 docker 中,runlike 命令显示创建容器时运行的命令为:
$ runlike -p gitlab
docker 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://[email protected]:222/hyang0/ip_notes.git',
'web_url': 'http://git-server.com:880/hyang0/ip_notes',
}
通过 python request 库生成项目列表:
import requests
from pprint import pprint
import sys
# 设置 GitLab 实例的 URL 和个人访问令牌
gitlab_url = "http://your-gitlab-server"
access_token = "your_token"
# 构建 API 请求的 URL
api_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 请求的 URL
api_url = f"{gitlab_url}/api/v4/users/{user_id_or_username}/projects?per_page=1000"
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):通过 Gitlab API 获取项目列表
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论