gitlab-ci500错误、删除项目报错500错误的解决方法

#起因
gitlab备份时不知道需要备份以下三个文件,而后导致了一系列的问题。截至11.11-ee,这个问题依然存在。

/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb
/home/git/gitlab/config/secrets.yml 

#操作前请备份好你的文件

下面是故障信息

Started GET "/***/***/settings/ci_cd" for 127.0.0.1 at 2019-04-01 09:21:14 +0000
Processing by Projects::Settings::CiCdController#show as HTML
  Parameters: {"namespace_id"=>"***", "project_id"=>"***"}
Completed 500 Internal Server Error in 53ms (ActiveRecord: 5.7ms)

**ActionView::Template::Error ():**
    25:     project_clusters_path(@project),
    26:     class: 'btn btn-info'
    27:   %hr
    28:   = render partial: 'ci/runner/how_to_setup_runner',
    29:            locals: { registration_token: @project.runners_token,
    30:                      type: 'specific',
    31:                      reset_token_url: reset_registration_token_namespace_project_settings_ci_cd_
path }

解决方法
进入gitlab 命令行

gitlab-rails dbconsole

输入如下配置

p = Project.find_by_full_path('deliverGroup/csjmall')                   
p.variables.each(&:destroy)

输入你CI\CD报错的项目名称

SELECT name, runners_token_encrypted FROM Projects WHERE Name = 'csjmall';

得到的结果如下

6XhOjN8mxV5b+U2pwWD/RXHE5tR5zk7wDlRyEgq7kS67G4wL

运行此命令后,下次进入项目的ci / cd设置页面时将生成一个新令牌。

此时你就可以删除项目了,不会再报错500。

方法2:

不太清楚为什么这个命令也会对我的环境有效,但是他解决了我的问题,如果上面的命令没有解决你的问题,可以在备份文件后使用该命令。

gitlab-rails dbconsole
Ci::Runner.all.update_all(token_encrypted: nil)

方法3:

此方法适用于上面两种方法无效后的尝试,使用此方法后会重置相关CI的所有密钥和token,谨慎

gitlab-ci500错误、删除项目报错500错误的解决方法_第1张图片

gitlabhq_production=> UPDATE projects SET runners_token = null, runners_token_encrypted = null;
UPDATE 88
gitlabhq_production=> UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
UPDATE 37
gitlabhq_production=> UPDATE application_settings SET runners_registration_token_encrypted = null;
UPDATE 6

你可能感兴趣的:(故障修复,gitlab)