在macOS上测试本地UI软件之前如何在容器中进行部署测试

81次阅读
没有评论

问题描述

作为持续集成(CI)设置的一部分,我希望能够在“安全环境”中运行(自动化)测试本地macOS GUI软件,而不会过多地干扰主机软件安装。虚拟机(使用VirtualBox)原则上可以工作,但它们启动/停止相当慢,而且macOS主机上的VirtualBox似乎不太稳定(在Linux主机上效果很好)。

在阅读了关于macOS上的桌面测试:Docker容器与Homebrew安装的内容后,我了解到使用Docker在macOS上进行软件测试非常好。然而,我理解的是,即使是使用Docker Desktop for Mac(使用Hyperkit虚拟化操作系统,而不是在VirtualBox中运行虚拟机),在容器中运行的软件看到的是Linux安装。

我想知道是否仍然可以使用Docker(也许我误解了?)使容器化程序看到macOS安装,或者是否有其他解决方案(纯粹的chroot?)在这种情况下更有效?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

使用Docker在macOS上进行GUI软件测试

根据您的描述,您希望在macOS上进行本地GUI软件的测试,而不希望影响主机软件安装。虽然Docker不能直接运行macOS操作系统,但仍然可以通过Docker在macOS上进行GUI软件测试,以下是一种可能的解决方案:

  1. 使用Docker镜像: 使用一个基于Linux的Docker镜像,该镜像中预装了您需要测试的GUI软件以及相应的依赖项。

  2. 使用X11转发: 在Docker容器中,您可以启动X11服务器并将GUI应用程序的图形界面转发到主机上。这样,虽然GUI应用程序在Docker容器内运行,但其图形界面将显示在您的macOS主机上。

下面是一个简单的步骤指南:

  1. 在Docker容器中运行GUI应用程序:
    bash
    docker run -it --rm -e DISPLAY=host.docker.internal:0 <your_image_name>

    其中<your_image_name>是包含您的GUI应用程序的Docker镜像。

  2. 在Docker容器内,您可以运行GUI软件,并且其界面将显示在macOS主机上。

请注意,host.docker.internal是Docker Desktop for Mac的特殊主机名,用于访问主机上的服务。这将使您能够将GUI界面转发到macOS主机。

考虑的替代方案

除了使用Docker外,您还可以考虑以下替代方案:

  1. 使用虚拟机: 虽然您提到VirtualBox在macOS上可能不太稳定,但您仍然可以尝试使用其他虚拟化软件(如VMware Fusion)来创建一个虚拟机,然后在其中运行macOS并进行GUI软件测试。

  2. 使用云服务: 考虑将GUI软件部署到云服务提供商的虚拟机中,这样您可以在类似macOS的环境中进行测试。

  3. 使用物理设备: 购买一台MacMini等硬件设备,将其用作持续集成服务器,以便在真实的macOS环境中运行自动化测试。

请根据您的需求和偏好选择适合您的解决方案。通过这些方法,您可以在macOS上进行GUI软件测试,并确保在安全环境中进行,同时最小化对主机环境的影响。

请注意,以上解决方案仅供参考,并可能因环境、工具版本等因素而有所不同。在实施之前,请务必进行必要的测试和调整。

正文完