无法删除项目路径中有下划线(_)的 Gitlab 项目

Posted

技术标签:

【中文标题】无法删除项目路径中有下划线(_)的 Gitlab 项目【英文标题】:Unable to delete Gitlab project having Underscore(_)in its Project Path 【发布时间】:2022-01-15 10:50:37 【问题描述】:

目前我们无法删除 GitLab 项目,该项目位于路径名以下划线 (_) 开头的组中。在 GitLab 的 UI 上,我们收到一条错误消息

计划删除此项目,但失败并显示以下消息:ContainerRegistry::Path::InvalidRegistryPathError

示例项目路径:_SampleGroupId/sampleProject

谁能帮助我们解决这个错误?如前所述,我们想从 GitLab 中删除项目。

【问题讨论】:

这是 GitLab 中的一个错误。请参阅:gitlab.com/gitlab-org/gitlab/-/issues/27483 如果您使用的是 GitLab.com,并且无法更改组路径或将项目转移到不同的命名空间,那么您可能无能为力。您必须升级到 GitLab 支持。如果您使用的是自我管理的实例,GitLab 管理员可能可以从 GitLab rails 控制台中删除它。 您好 sytech,我们正在使用 Gitlab,因此似乎需要为此与支持团队取得联系。让我与支持团队核实进展情况 【参考方案1】: 推荐的答案 GitLab

这是 GitLab 中的 known bug。

将您的项目转移到另一个命名空间(不包含下划线),然后将其删除。

如果您无法更改路径或转移项目,对于 gitlab.com 客户,由于该错误,only resolution is to contact support and have them delete it。

如果您对自我管理的实例具有管理控制台访问权限,请you can use the rails console 解决此问题。

自我管理的解决方法(通过 Rails 控制台)

解决此问题具有破坏性。弄乱控制台时,请务必仔细(或更多)检查您的工作,以免弄乱。否则,您可能会发现自己从备份中恢复。实际上,为了额外的安全性,我还是建议您在此之前进行备份。

在Rails console中,执行以下命令,在适当的地方替换

我已经稍微重写了代码指令,以便管理员可以更轻松地执行它们,并使用脚本顶部的常量进行参数化,并更轻松地键入/粘贴到 rails 控制台并进行一些注释了解发生了什么。

先根据需要设置参数。

PROJECT_ID=<put your project id here>
USER_NAME='root'  # change this if you want to use a different user
p=Project.find PROJECT_ID
u=User.find_by_username(USER_NAME)

确认用户和项目正确,然后尝试正常删除项目:

ProjectDestroyWorker.new.perform(p.id, u.id, )

您应该会看到从.perform 返回的false(您会看到=&gt; false 打印在控制台中)。确认删除错误是容器ContainerRegistry::Path::InvalidRegistryPathError

p.delete_error
# => # "ContainerRegistry::Path::InvalidRegistryPathError"

如果您确认删除错误,您可以继续执行项目组件的单独销毁,不包括容器注册表以及清理内容:

service =  ::Projects::DestroyService.new(p, u)
service.send(:log_destroy_event)
service.send(:trash_relation_repositories!)
service.send(:trash_project_repositories!)
service.send(:destroy_web_hooks!)
service.send(:destroy_project_bots!)
service.send(:destroy_ci_records!)
p.destroy_dependent_associations_in_batches(exclude: [:container_repositories, :snippets])
Projects::UnlinkForkService.new(p, u).execute
p.leave_pool_repository
p.destroy!
service.system_hook_service.execute_hooks_for(p, :destroy)
u.invalidate_personal_projects_count

【讨论】:

您好 marc_s ,syntech , 感谢您的回复。我们对更改命名空间有一些限制,所以似乎从 gitlab 支持支持中获得帮助是唯一的选择,向他们提出问题让我们看看事情如何发展。

以上是关于无法删除项目路径中有下划线(_)的 Gitlab 项目的主要内容,如果未能解决你的问题,请参考以下文章

Gradle CI Gitlab CURL 文件路径无法加载

Jenkins--第三关_Gitlab安装和配置(续)

gitlab基于阿里云OSS自动备份与恢复

Gitlab的备份与恢复

gitlab开发权限可以删除分支吗

GitLab 社区版 11.0.2用户管理教程