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,谨慎

在这里插入图片描述

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
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值