群组故障排查

命名空间和群组的验证错误#

创建或更新命名空间或群组时执行以下检查:

  1. 命名空间不能有父级。
  2. 群组的父级必须是群组而不是命名空间。

在极狐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 控制台会话中进行转移:

更改数据的命令如果没有正确运行或在正确的条件下运行,可能会导致损坏。始终在测试环境中首先运行命令,并准备好备份实例以进行恢复。
ruby
1user = 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 控制台会话中使用以下命令:

ruby
1Group.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 控制台会话中尝试使用以下命令删除群组:

更改数据的命令如果没有正确运行或在正确的条件下运行,可能会导致损坏。始终在测试环境中首先运行命令,并准备好备份实例以进行恢复。
ruby
GroupDestroyWorker.new.perform(group_id, user_id)

查找用户对群组或项目的最大权限#

管理员可以查找用户对群组或项目的最大权限。

  1. 启动一个 Rails 控制台会话

  2. 运行以下命令:

    ruby
    user = User.find_by_username 'username' project = Project.find_by_full_path 'group/project' user.max_member_access_for_project project.id
    ruby
    user = 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.

要将用户移除为计费成员,请选择以下选项之一:

  1. 从您的项目或群组成员页面中移除邀请的群组成员。
  2. 推荐。直接从邀请的群组中移除用户,如果您有群组的访问权限。

缺少或权限不足,删除按钮被禁用#

当用户尝试在群组转移期间移除已归档项目中的 container_registry 图像时,通常会出现此错误。要解决此错误:

  1. 取消归档项目。
  2. 删除 container_registry 图像。
  3. 归档项目。