GitLab14.3.2-ee如何查询所有已启用镜像功能的代码仓库
GitLab 14.3.2-ee 查询所有启用镜像功能项目的操作方案
方法一:服务器端Rails控制台直接查询(推荐,操作最快)
你可以直接登录GitLab部署的服务器,通过自带的Rails控制台执行查询语句,一次性导出所有符合要求的项目:
- 执行命令进入Rails控制台:
gitlab-rails console - 执行以下查询语句,直接输出所有启用了拉取/推送镜像的项目信息:
Project.all.each do |proj| has_pull_mirror = proj.mirror has_push_mirror = proj.remote_mirrors.where(enabled: true).exists? next unless has_pull_mirror || has_push_mirror puts "项目ID:#{proj.id} | 项目路径:#{proj.path_with_namespace} | 拉取镜像启用:#{has_pull_mirror} | 推送镜像启用:#{has_push_mirror}" end - 执行完成后你可以直接把输出结果复制出来整理,快速定位所有已经配置镜像的项目。
方法二:通过GitLab API批量查询(无需登录服务器)
如果你不方便登录GitLab服务器,可以用管理员权限的API凭证批量拉取项目配置校验:
- 先在管理员账号下生成个人访问令牌(PAT),授予
read_api、read_project权限 - 调用
GET /projects接口分页拉取所有项目的ID和路径信息 - 对每个项目分别调用两个接口校验镜像状态:
- 拉取镜像状态:
GET /projects/:id,返回参数中mirror值为true即已启用 - 推送镜像状态:
GET /projects/:id/remote_mirrors,返回列表中存在enabled为true的条目即已启用
- 拉取镜像状态:
- 你可以写简单的遍历脚本完成批量校验,不需要手动进入每个项目的配置页检查。
替换凭证的补充建议
你后续要统一替换为Azure的共享凭证时,建议先备份所有原有镜像的配置信息,再批量更新凭证,避免操作异常导致镜像同步中断。
内容的提问来源于stack exchange,提问作者Daniel Procházka
相关产品推荐
相关产品推荐

