2

我正在使用 gitlab-ci 自动构建 C++ 项目并运行用 python 编写的单元测试(它运行守护进程,然后通过基于网络/套接字的接口进行通信)。

我发现的问题是,当测试由 GitLab-CI 运行程序运行时,它们由于各种原因而失败(在一个测试中,它在特定的网络操作上无限期停止,另一方面它没有收到一个数据包应该已经发送)。

但是:当我打开 SSH 并手动运行测试时,它们都可以成功运行(测试也在我们所有开发人员的机器上成功 [linux/windows/OSX])。

在这一点上,我一直在尝试复制足够多的 gitlab-ci 正在使用的构建/测试条件,但我真的不知道任何确切的细节,而且我的实验都没有重现这个问题。

我非常感谢以下任一方面的帮助:

  • 在 gitlab-ci 之外手动运行测试的指导,但复制其环境,以便我可以得到相同的错误/失败并调试守护程序和/或测试,或者
  • 深入了解为什么 GitLab-CI-Runner 运行测试会失败

Sidetrack 1:由于某种原因,并非所有通常发送到 shell 的(主要是调试)输出都显示在 gitlab-ci 输出中。

Sidetrack 2:我也尝试过使用 jenkins 进行设置,但是其中一个测试甚至无法连接到守护进程,而其余测试则很好。

4

1 回答 1

0

-我通常通过只为运行器使用 docker 容器并在其中运行测试来复制问题,不知道你是否有这样的设置 =(。 -通常如果你登录容器,测试实际上不会失败你会看到他实际上做了所有事情,但没有向 Gilab CI 报告,不要惊慌,它会做它的工作,它根本不会说出来。

PS:您可以通过检查机器上的进程来查看它是否实际运行。

示例:我使用 java 和 docker 运行 gitlab ci:

gitlab ci 开始做它的事情然后在下载时挂起,同时我登录容器并检查他是否真的在工作并设法上传我编译的 docker 图像。

于 2015-01-05T12:28:47.017 回答