【问题标题】:Is it possible to debug a Gitlab CI build interactively?是否可以交互式调试 Gitlab CI 构建?
【发布时间】:2018-03-11 20:21:34
【问题描述】:

我在 Gitlab CI 中有一个构建需要很长时间(10 分钟以上)才能运行,每次我需要试验/进行更改时等待整个过程非常烦人。似乎肯定有一种方法可以在构建过程中访问某种 shell 并以交互方式运行命令,而不是将它们全部放在部署脚本中。

我知道可以在本地运行 Gitlab CI tests,但我似乎无法找到一种方法来访问正在运行的部署,即使在搜索文档之后也是如此。

是我运气不好还是有办法手动控制这个冗长的构建?

【问题讨论】:

  • 只要您使用 docker 映像,您仍然可以在本地运行您的作业(参见例如 bryce.fisher-fleig.org/blog/faster-ci-debugging-with-gitlabci/… 以获得一些完整的参考)并重新启动容器/检查它们(即使用 docker logs)失败时
  • 您有没有找到解决方案?我必须测试我的构建与通过其专有面板连接的 Kubernetes 集群的集成,因此本地构建在这里并没有真正的帮助。我一直在 travis-ci.com 上完成它,所以我只是假设我也可以用 GitLab 完成它。显然我错了¯\_(ツ)_/¯
  • @FrancescoCasula 很抱歉,我还没有解决这个问题。如果我遇到修复,我绝对会更新线程。

标签: gitlab-ci gitlab-ci-runner


【解决方案1】:

我暂时还没有找到干净的方法,但我是这样做的

  1. 我开始在本地构建gitlab-runner exec docker your_build_name
  2. 我在要构建的 docker 映像之后使用 control + c 杀死 gitlab-runner。您仍然可以将命令 sleep 1m 添加为第一个脚本行,以便有足够的时间杀死 gitlab-runner 注意:gitlab-runner 将创建一个 docker,然后在工作完成后将其删除……杀死它会确保 docker 仍然存在 - no other alternative I know for now…
  3. 手动登录容器docker exec -i -t <instance-id/tag-name> bash
  4. 手动运行脚本命令……

【讨论】:

  • 这种方法对我有用,但请注意,作业是在容器内的 /builds 下构建的,因此在执行 docker exec -i -t <instance-id/tag-name> bash 后,您应该运行 cd /builds/project-0/ 并在那里您会找到作业根目录。
  • 'your_build_name' 是什么意思?我已经在本地机器上成功安装并注册了 gitlab-runner。
【解决方案2】:

您可以查看项目管道中的作业屏幕

示例:https://yourgitlab.de/vendor/project/-/jobs

Button to press in the webGUI

通过管道和作业的链接,您可以将部署/构建项目的每一项任务分开

【讨论】:

  • 当然,我知道观看作业执行所涉及的过程。我感到恼火的是,我需要运行一个冗长的构建过程,然后才能确定我在部署结束时所做的更改是否能正常工作。据我所知,分离任务无济于事,因为我仍然需要在每次修订时重新启动所有先前的任务。我真的更喜欢将部署暂停 80% 并尝试几个选项。
猜你喜欢
  • 2011-04-16
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多