我已经使用QTest为Qt应用程序编写了许多单元测试,它们被打包到一个单独的可执行文件中,可以从终端运行。这两个可执行文件都可以在我的桌面和Jenkins服务器上编译和运行得很好。
但是,当我尝试使用SSH通过Jenkins上的作业运行这些单元测试时,收到以下错误:
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vkkhrdisplay, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
我认为这是SSH不支持图形界面的问题,但我认为Qt必须有一种通过SSH运行单元测试的方法来实现持续集成?或者这是不可能的?它使用的是Qt版本6.2.2。
1条答案
按热度按时间67up9zun1#
Qt应用程序是图形化的。当您通过SSH连接到Jenkins服务器时,服务器上的外壳程序将没有正确配置的DISPLAY变量。
DISPLAY变量有什么作用?
现在缺省值是
:0
,它是使用第一个显示屏(0)连接到IP地址为127.0.0.1的服务器的缩写。在您的例子中,显示服务器很可能是您通过SSH连接到Jenkins服务器时登录的系统。因此,您需要计算出系统的IP地址。这通常与运行
who
:Risner pt/0 2022-09-05 06:50(203.0.113.2)一样简单设置您的显示变量:
export DISPLAY=203.0.113.2:0
for zsh/bash/sh/ksh用于CSH/Tcsh的
setenv DISPLAY 203.0.113.2:0