如何在 Gitlab CI 中调试 Rails 错误?

How to debug Rails errors in Gitlab CI?

我是 Gitlab 的新手,所以这可能是一个初学者问题。

我刚刚将我的 Rails 存储库迁移到 Gitlab - 非常基础,还没有测试。但是 CI 管道似乎在这里失败了:

$ rails db:migrate
rails aborted!
NameError: uninitialized constant ApplicationPolicy
/builds/sapi/app/policies/request_update_policy.rb:1:in `<top (required)>'
/builds/sapi/config/application.rb:28:in `each'
/builds/sapi/config/application.rb:28:in `<class:Application>'
/builds/sapi/config/application.rb:20:in `<module:SDOTApi>'
/builds/sapi/config/application.rb:19:in `<top (required)>'

现在的问题是我无法在我的本地存储库中重现它。所以,我不确定如何最好地调试它,因为我认为首先不应该发生(当然,与所有其他策略文件相比,不在这个未使用的策略文件中)。

所以,有几个问题:

  1. 如何登录 CI 控制台进行调试?
  2. 任何提示或想法可能会发生什么?
  3. 如果需要,我如何关闭 CI(不是针对每个提交消息,但通常针对项目)?

遗憾的是 web terminals 仅在使用部署服务(例如 Kubernetes)时可用

但是,如果您可以访问 运行ner,您可以通过 ssh 手动登录并使用 gitlab-运行ner 二进制文件执行(即使用 gitlab-runner exec 命令)它克隆的 git 仓库中的失败作业。

如果您无法访问 运行ner 但您正在使用基于 Docker 的作业,您始终可以在本地使用 GitLab Runner 二进制文件作为您的 OS 到 运行 并调试你的工作:

cd <project-root>
/usr/local/bin/gitlab-runner exec docker <job-name>

失败后,您可以将它生成的容器重新启动到 运行 终端(使用 docker exec)并调试其中出现的问题。您在 https://docs.gitlab.com/ce/ci/docker/using_docker_images.html#how-to-debug-a-job-locally

中对此有更完整的解释

要为整个项目禁用 CI,您可以在项目的常规设置中关闭 "Pipelines" 开关: