不使用X11在CI服务上运行GUI应用程序

9
我有一个GUI应用程序,我想通过GitHub Actions设置其测试。我已经设置好了GitHub Actions,以在Ubuntu上编译该应用程序,但现在我想做的是运行该应用程序几秒钟并测试其是否崩溃。然而,目前它无法启动,因为没有安装X11服务器。
有没有一种方法可以安装虚拟X11服务器,以便应用程序运行?我不关心显示的内容,我只想让应用程序能够打开而不因缺少X11服务器而失败。
或者,有没有一种方法可以安装虚拟Wayland服务器?这个应用程序也可以在Wayland上运行。
3个回答

7
你可以尝试xvfb-run,它来自Xvfb项目。它在没有任何硬件的情况下启动您的应用程序,使其在完全兼容的X Window服务器下运行(您甚至可以在应用程序中运行x11vnc并通过VNC连接到服务器,但我相信现在不是这种情况)。个人而言,我使用xvfb-run进行隔离的无屏幕X.org感知包构建,例如,当一个软件包需要在制作文档时拍摄自己的快照。
$ xvfb-run x.org_application_binary

3

我使用这个命令:

  linux:
    runs-on: ubuntu-latest

    steps:
        run: |
          export DISPLAY=:99
          sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
          mycommand

-1

是的,这是可能的。只需创建一个带有X11环境的Docker镜像,并在其中部署您的应用程序即可。

或者,您也可以在计算机上安装X11。请确保每次运行时都进行安装,因为环境始终完全重置:

sudo apt-get install xorg openbox

3
即使安装了X11,它仍然显示没有显示器。我需要一个虚拟显示器或其他东西。 错误:X11显示不可用 错误:无法打开显示: 错误:无法创建DisplayServer,所有显示驱动程序均失败。 - Aaron Franke
你的DISPLAY环境变量设置了吗?如果你运行一个xterm终端,它会默认设置DISPLAY,但如果终端不是从X中启动的,就不会有任何设置。通常情况下,它的值是“:0.0”,但并非全部。通过在xterm中回显它来检查它的值,然后在你要运行测试的终端中设置它。(你还可能需要处理xauth和xhosts)先设置好你的display变量。 - silicontrip
2
这个问题涉及到没有显示器/视频硬件的环境,因此需要使用特殊的虚拟X服务器,例如Xvfb。 - FrBrGeorge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接