Integrity check Rake task

Integrity check Rake task

GitLab 提供了 Rake 任务来检查各种组件的完整性.

尽管 Git 非常灵活,并试图防止数据完整性问题,但有时还是会出错. 以下 Rake 任务旨在帮助 GitLab 管理员诊断问题存储库,以便对其进行修复.

需要检查 3 件事以确定完整性.

  1. Git 存储库文件系统检查( ). 此步骤验证存储库中对象的连接性和有效性.
  2. 检查refs/heads是否有任何分支/引用锁定文件.

重要的是要注意,仅存在config.lock或引用锁并不一定表示问题. 当 Git 和 GitLab 在存储库上执行操作时,会定期创建和删除锁定文件. 它们用于防止数据完整性问题. 但是,如果 Git 操作被中断,则这些锁可能无法正确清理.

  • 尝试推送代码时收到错误- remote: error: cannot lock ref
  • 查看 GitLab 仪表板或访问特定项目时出现 500 错误.

此任务循环遍历 GitLab 服务器上的所有存储库,并运行前面所述的完整性检查.

全部安装

源安装

  1. sudo -u git -H bundle exec rake gitlab:git:fsck RAILS_ENV=production

用户可以将各种类型的文件上传到 GitLab 安装. 这些完整性检查可以检测丢失的文件. 此外,对于本地存储的文件,会在上载时生成校验和并将其存储在数据库中,这些校验将针对当前文件进行校验.

  • CI 工件(从版本 10.7.0 起可用)
  • LFS 对象(从版本 10.6.0 起可用)
  • 用户上传(从版本 10.6.0 起可用)

全部安装

Source Installation

  1. sudo -u git -H bundle exec rake gitlab:artifacts:check RAILS_ENV=production
  2. sudo -u git -H bundle exec rake gitlab:lfs:check RAILS_ENV=production

这些任务还接受一些环境变量,可用于覆盖某些值:

输出示例:

  1. Checking integrity of Uploads
  2. - 1..1350: Failures: 0
  3. - 2745..4349: Failures: 2
  4. - 4357..5762: Failures: 1
  5. - 5764..7140: Failures: 2
  6. - 7142..8651: Failures: 0
  7. - 8653..10134: Failures: 0
  8. - 10135..11773: Failures: 0
  9. - 11777..13315: Failures: 0

LDAP 检查 Rake 任务将测试绑定 DN 和密码凭据(如果已配置),并将列出 LDAP 用户的样本. 此任务也作为gitlab:check任务的一部分执行,但可以独立运行. 有关详细信息,请参见LDAP Rake 任务-LDAP 检查 .