在 linux Jenkins 上构建一个针对 MSVC 的项目
Build a project targeting MSVC on linux Jenkins
我有一个私人服务器,我一直在为个人项目慢慢设置它,但我 运行 遇到了一些障碍。我的服务器是 运行ning Arch linux [我喜欢在这种情况下进行前沿和简约的安装],我在上面安装了 Jenkins 运行ning,这样我就可以让它自动构建项目。我有一个我一直在从事的项目,目前使用 MSVC 以 Win32/64 平台为目标,但我似乎无法在任何地方找到关于在 Jenkins 上为这种情况设置工作的任何信息。我希望我可以设置一个 Docker 实例来提供 MSVC 工具链,特别是因为 Visual Studio 代码可用于 Linux,并且我可以将其用作一部分我的 Jenkins 设置生成 Win 二进制文件供我在我的主机上测试。我提到这个是因为 Visual Studio 自然不是命令行实用程序,目前我的服务器是一个纯粹的无头设置,只提供 cli 交互,所以如果可能的话,我想避免直接向服务器添加 GUI 包,但如果这是唯一的方法,我愿意这样做。真的没有办法实现我想要的吗?
抱歉,如果这缺少重要细节或格式不正确,这是我第一次在这里提问,因为我很少能在已经存在的问题中找不到我正在寻找的信息。
我不能完全回答这个问题,但是这个话题对我来说也很有趣。
注意: Visual Studio代码是开源的,但这是一个基于 Electron 的编辑器。 Visual Studio IDE 和 MSVC 是专有的 Windows 应用程序。
网站 https://blog.sixeyed.com/how-to-dockerize-windows-applications/ 建议可以对 Windows 应用程序进行 docker 化,包括 Visual Studio。
Docker images for Windows apps need to be based on microsoft/nanoserver or microsoft/windowsservercore, or on another image based on one of those.
一旦你开始工作,我会使用 Visual Studio 命令行构建,比如 devenv /build file.sln [optionally /project file.vcxproj ]
。 (https://docs.microsoft.com/en-us/visualstudio/ide/reference/devenv-command-line-switches?view=vs-2017).
请注意,VS2017 安装程序在 Wine 上不起作用。我最近为此提交了一个错误 (https://bugs.winehq.org/show_bug.cgi?id=45749 followed by https://bugs.winehq.org/show_bug.cgi?id=45757)。
我个人使用 Appveyor 来自动构建 MSVC 应用程序。 Appveyor 是基于 Windows 的集中式云服务,而不是自托管 CI 系统。
经过研究,目前这是不可能的,因为它源于对 docker 所提供内容的误解。 Docker 只是简单地使用底层 OS 来提供一切,并不提供任何外部 OS 的虚拟化。如果没有可以 运行 on linux 的 MSVC 工具链版本,或者可能不使用 WINE,则无法实现这种缺少 VM 的方法。由于 WINE 并不完美,在我看来最可靠的解决方案是 VM,但 YMMV。使用 VM 的另一个好处是我可以让服务器保持无头状态。
我有一个私人服务器,我一直在为个人项目慢慢设置它,但我 运行 遇到了一些障碍。我的服务器是 运行ning Arch linux [我喜欢在这种情况下进行前沿和简约的安装],我在上面安装了 Jenkins 运行ning,这样我就可以让它自动构建项目。我有一个我一直在从事的项目,目前使用 MSVC 以 Win32/64 平台为目标,但我似乎无法在任何地方找到关于在 Jenkins 上为这种情况设置工作的任何信息。我希望我可以设置一个 Docker 实例来提供 MSVC 工具链,特别是因为 Visual Studio 代码可用于 Linux,并且我可以将其用作一部分我的 Jenkins 设置生成 Win 二进制文件供我在我的主机上测试。我提到这个是因为 Visual Studio 自然不是命令行实用程序,目前我的服务器是一个纯粹的无头设置,只提供 cli 交互,所以如果可能的话,我想避免直接向服务器添加 GUI 包,但如果这是唯一的方法,我愿意这样做。真的没有办法实现我想要的吗?
抱歉,如果这缺少重要细节或格式不正确,这是我第一次在这里提问,因为我很少能在已经存在的问题中找不到我正在寻找的信息。
我不能完全回答这个问题,但是这个话题对我来说也很有趣。
注意: Visual Studio代码是开源的,但这是一个基于 Electron 的编辑器。 Visual Studio IDE 和 MSVC 是专有的 Windows 应用程序。
网站 https://blog.sixeyed.com/how-to-dockerize-windows-applications/ 建议可以对 Windows 应用程序进行 docker 化,包括 Visual Studio。
Docker images for Windows apps need to be based on microsoft/nanoserver or microsoft/windowsservercore, or on another image based on one of those.
一旦你开始工作,我会使用 Visual Studio 命令行构建,比如 devenv /build file.sln [optionally /project file.vcxproj ]
。 (https://docs.microsoft.com/en-us/visualstudio/ide/reference/devenv-command-line-switches?view=vs-2017).
请注意,VS2017 安装程序在 Wine 上不起作用。我最近为此提交了一个错误 (https://bugs.winehq.org/show_bug.cgi?id=45749 followed by https://bugs.winehq.org/show_bug.cgi?id=45757)。
我个人使用 Appveyor 来自动构建 MSVC 应用程序。 Appveyor 是基于 Windows 的集中式云服务,而不是自托管 CI 系统。
经过研究,目前这是不可能的,因为它源于对 docker 所提供内容的误解。 Docker 只是简单地使用底层 OS 来提供一切,并不提供任何外部 OS 的虚拟化。如果没有可以 运行 on linux 的 MSVC 工具链版本,或者可能不使用 WINE,则无法实现这种缺少 VM 的方法。由于 WINE 并不完美,在我看来最可靠的解决方案是 VM,但 YMMV。使用 VM 的另一个好处是我可以让服务器保持无头状态。