#起因
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 }1234567891011121314
解决方法
进入gitlab 命令行
gitlab-rails dbconsole1
输入如下配置
p = Project.find_by_full_path('deliverGroup/csjmall')
p.variables.each(&:destroy)12
输入你CI\CD报错的项目名称
SELECT name, runners_token_encrypted FROM Projects WHERE Name = 'csjmall';1
得到的结果如下
6XhOjN8mxV5b+U2pwWD/RXHE5tR5zk7wDlRyEgq7kS67G4wL1
运行此命令后,下次进入项目的ci / cd设置页面时将生成一个新令牌。
此时你就可以删除项目了,不会再报错500。
方法2:
不太清楚为什么这个命令也会对我的环境有效,但是他解决了我的问题,如果上面的命令没有解决你的问题,可以在备份文件后使用该命令。
gitlab-rails dbconsole
Ci::Runner.all.update_all(token_encrypted: nil)12
方法3:
此方法适用于上面两种方法无效后的尝试,使用此方法后会重置相关CI的所有密钥和token,谨慎!

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