Я написал сценарий Python3, который создает некоторый ресурс Qt (.rcc)
и файлы заголовков (.h)
.
Поскольку этот сценарий будет выполняться как на Windows, так и на macOS, я основал Путь инструмента Qt к переменной среды, называемой QTBIN , которая указывает на двоичную папку в папке установки Qt.
Пока все хорошо при вызове сценария вручную в терминале (оба Windows и Ма c).
Затем я добавил сценарий в качестве события перед сборкой в Visual Studio 2019:
python $(ProjectDir)Scripts\generateQtUI.py
Пока все хорошо. Он выполняется Visual Studio и XCode при локальном запуске.
Теперь, когда мы используем сервер сборки GitLab для сборки обоих проектов, это должно быть просто замечательно. Это команда msbuild, выполняемая Windows GitLab Runner:
- 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 Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(139,5): error MSB3073: The command "python C:\GitLab-Runner\builds\Uthz1X_B\0\company\product\Scripts\generateQtUI.py [C:\GitLab-Runner\builds\Uthz1X_B\0\company\product\project.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(139,5): error MSB3073: [C:\GitLab-Runner\builds\Uthz1X_B\0\company\product\project.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(139,5): error MSB3073: :VCEnd" exited with code 9020. [C:\GitLab-Runner\builds\Uthz1X_B\0\company\product\project.vcxproj]
200 Warning(s)
1 Error(s)
Time Elapsed 00:01:10.92
ERROR: Job failed: exit status 1
Похоже, что сценарии этого не делают даже запускается, поскольку у него есть собственный вывод, который обычно записывается на консоль.
Экземпляр бегуна GitLab на Windows настроен с исполнителем оболочки, а оболочкой является Powershell.
Любые идеи о том, почему серверу сборки не удается создать решение?
ПРИМЕЧАНИЕ : Windows сервер сборки и компьютер разработчика в этом случае - это одни и те же машины.
Дополнительные тесты
Я попытался вызвать сценарий Hello Python .py непосредственно из конфигурации задания сборки. Это возвращает ошибку разрешения, сообщающую, что задание не имеет доступа к папке TEMP, хотя GitLab Runner установлен как служба с конфигурацией по умолчанию (root user).
$ whoami
nt authority\system
$ python Scripts/HelloPython.py
Program 'python.exe' failed to run: Systemet kan ikke f� adgang til filenAt C:\WINDOWS\TEMP\build_script885294397\scrip
t.ps1:183 char:1
+ python Scripts/HelloPython.py
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
At C:\WINDOWS\TEMP\build_script885294397\script.ps1:183 char:1
+ python Scripts/HelloPython.py
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed
ERROR: Job failed: exit status 1