我正在使用gitlab-ci自动构建一个C ++项目并运行用python编写的单元测试(它运行守护进程,然后通过基于网络/套接字的接口进行通信)。
我发现的问题是,当测试由GitLab-CI运行程序运行时,它们会因各种原因而失败(通过一次测试,它会无限期地停止在特定网络操作上,另一方面则无法接收应该已发送的数据包。)
但是:当我打开SSH并手动运行测试时,它们都能成功运行(测试也在我们所有开发人员的机器上成功[linux / windows / OSX])。
此时我一直试图复制gitlab-ci正在使用的足够的构建/测试条件,但我真的不知道任何确切的细节,我的实验都没有重现这个问题。
我非常感谢以下任何一方的帮助:
Sidetrack 1: 出于某种原因,并非通常发送到shell的所有(主要是调试)输出都显示在gitlab-ci输出中。
Sidetrack 2: 我也玩jenkins来设置它,但其中一个测试甚至无法连接到守护进程,而其余测试都没问题。
答案 0 :(得分:0)
-i通常只为转轮使用一个docker容器并在其中运行测试来复制问题,不知道你是否设置了这样的设置=(。 - 通常测试并没有实际失败,如果你登录容器,你会看到他实际上做了所有事情,但没有报告回Gilab CI,不要惊慌它是否工作它只是不说它。
PS:你可以通过检查机器上的进程来查看它是否实际运行。
例如: 我用java和docker运行gitlab ci:
gitlab ci开始做它的东西然后下载,同时我登录容器并检查他是否真的正在工作并设法上传我编译的docker镜像。