在GitLab Runner中,Visual Studio项目的预生成任务失败

Pre-build task of Visual Studio project fails in GitLab Runner(在GitLab Runner中,Visual Studio项目的预生成任务失败)

本文介绍了在GitLab Runner中,Visual Studio项目的预生成任务失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经编写了一个Python3脚本,它创建了一些Qt资源(.rcc)和头文件(.h)

因为此脚本将在Windows和MacOS上执行,所以我将Qt工具路径基于名为QTBIN的环境变量,该环境变量指向Qt安装文件夹中的二进制文件夹。

到目前为止,在终端(Windows和Mac)手动调用脚本时一切正常。

然后我将该脚本添加为Visual Studio 2019中的预生成事件:

python $(ProjectDir)ScriptsgenerateQtUI.py

到目前为止,一切都很好。它在本地运行时由Visual Studio和Xcode执行。

现在,因为我们使用GitLab构建服务器来构建这两个项目,所以这应该很好。 这是由Windows GitLab运行程序执行的msbuild命令:

- msbuild -m project.sln /t:project /p:Configuration=Debug /p:Platform=x64 /p:PreferredToolArchitecture=x64 -noWarn:C4244 -noWarn:C4267 -noWarn:C4099 -noWarn:C4305 -noWarn:C4018

然而,MacOS和Windows构建服务器都在抱怨。当然,我已经向两个构建服务器添加了新的环境变量。

Windows生成服务器返回此错误日志片段:

        C:Program Files (x86)Microsoft Visual Studio2019ProfessionalMSBuildMicrosoftVCv160Microsoft.CppCommon.targets(139,5): error MSB3073: The command "python C:GitLab-RunneruildsUthz1X_BcompanyproductScriptsgenerateQtUI.py [C:GitLab-RunneruildsUthz1X_Bcompanyproductproject.vcxproj]
        C:Program Files (x86)Microsoft Visual Studio2019ProfessionalMSBuildMicrosoftVCv160Microsoft.CppCommon.targets(139,5): error MSB3073:  [C:GitLab-RunneruildsUthz1X_Bcompanyproductproject.vcxproj]
        C:Program Files (x86)Microsoft Visual Studio2019ProfessionalMSBuildMicrosoftVCv160Microsoft.CppCommon.targets(139,5): error MSB3073: :VCEnd" exited with code 9020. [C:GitLab-RunneruildsUthz1X_Bcompanyproductproject.vcxproj]
     200 Warning(s)
     1 Error(s)
 Time Elapsed 00:01:10.92
 ERROR: Job failed: exit status 1

脚本看起来甚至没有启动,因为它有自己的输出,通常会写入到控制台。

Windows上的GitLab运行器实例是使用外壳执行器设置的,外壳是PowerShell。

您对生成服务器生成解决方案失败的原因有什么看法吗?

注意:在本例中,Windows生成服务器和开发计算机是同一台计算机。


其他测试

我尝试直接从构建作业配置调用HelloPython.py脚本。这将返回一个权限错误,告知作业无权访问临时文件夹,尽管GitLab Runner已作为服务使用default configuration(根用户)安装。

$ whoami
 nt authoritysystem
$ python Scripts/HelloPython.py
 Program 'python.exe' failed to run: Systemet kan ikke f� adgang til filenAt C:WINDOWSTEMPuild_script885294397scrip
 t.ps1:183 char:1
 + python Scripts/HelloPython.py
 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
 At C:WINDOWSTEMPuild_script885294397script.ps1:183 char:1
 + python Scripts/HelloPython.py
 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
     + FullyQualifiedErrorId : NativeCommandFailed

 ERROR: Job failed: exit status 1

推荐答案

好吧,我没有看到这一点:权限问题原来是安装的问题。它只为当前用户安装,而不是所有用户。在安装过程中,我选择了:为所有用户安装Python Launcher。但这并不允许所有用户都使用Python

为解决此问题,我重新安装了Python,选择了自定义安装,并选择了选项:所有用户。

事实证明,这也是GitLab生成作业的解决方案。

吸取的教训

  1. 始终确保"为所有用户安装"实际上是针对预期的软件。
  2. 不要太深入地研究错误消息-它可能是错误的或具有误导性的。

这篇关于在GitLab Runner中,Visual Studio项目的预生成任务失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:在GitLab Runner中,Visual Studio项目的预生成任务失败