我正在使用 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 进行设置,但是其中一个测试甚至无法连接到守护进程,而其余测试则很好。