如何获取GitLab指定分组下所有仓库的SSH地址列表?
获取GitLab分组下所有仓库SSH地址的正确方法
你的原命令使用/groups/56627504/接口获取分组信息,其中返回的projects字段只是分组内项目的部分预览(默认最多返回20个),无法拿到全部仓库数据。要获取所有仓库的SSH地址,应该使用GitLab API专门的分组项目列表接口:
1. 单次获取(项目数≤100)
GitLab API允许通过per_page参数最多一次获取100个项目,直接提取每个项目的ssh_url_to_repo:
curl --header "PRIVATE-TOKEN: glpat-pnwcu54ZQKz3gtyG-fty" "https://gitlab.com/api/v4/groups/56627504/projects?per_page=100" | jq -r '.[].ssh_url_to_repo'
2. 分页获取(项目数超过100)
如果分组内项目超过100个,需要循环遍历所有分页:
page=1 while true; do response=$(curl --header "PRIVATE-TOKEN: glpat-pnwcu54ZQKz3gtyG-fty" "https://gitlab.com/api/v4/groups/56627504/projects?per_page=100&page=$page") # 当返回的项目数组为空时停止循环 if [ "$(echo "$response" | jq 'length')" -eq 0 ]; then break fi echo "$response" | jq -r '.[].ssh_url_to_repo' page=$((page+1)) done
关键说明
- 用
/groups/:id/projects接口替代/groups/:id接口,前者专门用于获取分组下的完整项目列表,支持分页。 per_page=100是GitLab API允许的最大单次返回数量,减少请求次数。- 循环分页时,通过检查返回的项目数组长度判断是否还有下一页。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

