群组故障排查
命名空间和群组的验证错误
创建或更新命名空间或群组时执行以下检查:
- 命名空间不能有父级。
- 群组的父级必须是群组而不是命名空间。
在极狐GitLab 安装中出现这些错误的可能性很小,联系支持以便我们改进此验证。
使用 SQL 查询查找群组
要在 Rails 控制台中基于 SQL 查询查找并存储群组数组:
ruby# 查找以 '%oup' 结尾的群组和子群组 Group.find_by_sql("SELECT * FROM namespaces WHERE name LIKE '%oup'") => [#<Group id:3 @test-group>, #<Group id:4 @template-group/template-subgroup>]
使用 Rails 控制台将子群组转移到其他位置
如果通过 UI 或 API 转移群组失败,您可以尝试在 Rails 控制台会话中进行转移:
更改数据的命令如果没有正确运行或在正确的条件下运行,可能会导致损坏。始终在测试环境中首先运行命令,并准备好备份实例以进行恢复。
ruby1user = User.find_by_username('<username>') 2group = Group.find_by_name("<group_name>") 3## 设置 parent_group = nil 以使子群组成为顶级群组 4parent_group = Group.find_by(id: "<group_id>") 5service = ::Groups::TransferService.new(group, user) 6service.execute(parent_group)
使用 Rails 控制台查找待删除的群组
如果您需要查找所有待删除的群组,可以在 Rails 控制台会话中使用以下命令:
ruby1Group.all.each do |g| 2 if g.marked_for_deletion? 3 puts "Group ID: #{g.id}" 4 puts "Group name: #{g.name}" 5 puts "Group path: #{g.full_path}" 6 end 7end
使用 Rails 控制台删除群组
有时,群组删除可能会卡住。如果需要,可以在 Rails 控制台会话中尝试使用以下命令删除群组:
更改数据的命令如果没有正确运行或在正确的条件下运行,可能会导致损坏。始终在测试环境中首先运行命令,并准备好备份实例以进行恢复。
rubyGroupDestroyWorker.new.perform(group_id, user_id)
查找用户对群组或项目的最大权限
管理员可以查找用户对群组或项目的最大权限。
-
启动一个 Rails 控制台会话。
-
运行以下命令:
rubyuser = User.find_by_username 'username' project = Project.find_by_full_path 'group/project' user.max_member_access_for_project project.idrubyuser = User.find_by_username 'username' group = Group.find_by_full_path 'group' user.max_member_access_for_group group.id
无法移除带有 项目邀请/群组邀请 徽章的计费成员
当用户属于已与您的项目或群组共享的外部群组时,通常会出现以下错误:
Members who were invited via a group invitation cannot be removed. You can either remove the entire group, or ask an Owner of the invited group to remove the member.
要将用户移除为计费成员,请选择以下选项之一:
- 从您的项目或群组成员页面中移除邀请的群组成员。
- 推荐。直接从邀请的群组中移除用户,如果您有群组的访问权限。
缺少或权限不足,删除按钮被禁用
当用户尝试在群组转移期间移除已归档项目中的 container_registry 图像时,通常会出现此错误。要解决此错误:
- 取消归档项目。
- 删除 container_registry 图像。
- 归档项目。