如何在PowerShell中让Start-Process前台运行?GitHub Actions执行异常排查
GitHub Actions Windows平台QT UI测试卡顿解决方案
针对你在GitHub Actions中运行QT UI测试时出现的命令无限卡顿问题,给你几个可行的解决方向:
直接在当前控制台运行测试程序
GitHub Actions的Windows Runner默认没有交互式桌面会话,Start-Process默认创建新窗口的行为,会因无桌面环境导致UI无法渲染进而卡住。改用直接调用的方式,或者强制在当前控制台运行:
直接调用命令:& .\Layout_test.exe -my args或者调整
Start-Process参数,添加-NoNewWindow并捕获日志方便排查:Start-Process -FilePath ".\Layout_test.exe" -Wait -NoNewWindow -ArgumentList "-my", "args" -RedirectStandardOutput "test_output.log" -RedirectStandardError "test_error.log"配置QT离屏渲染参数
强制QT使用无需桌面的离屏渲染模式,避免因UI渲染依赖桌面环境卡住。可以通过环境变量或启动参数设置:
方式一:在GitHub Actions的job中添加环境变量:env: QT_QPA_PLATFORM: offscreen QT_QPA_FONTDIR: C:\Windows\Fonts方式二:在启动命令中直接指定平台参数:
Start-Process -FilePath ".\Layout_test.exe" -Wait -NoNewWindow -ArgumentList "-my", "args", "-platform", "offscreen"启用虚拟桌面会话
如果测试必须依赖真实桌面环境,可以在GitHub Actions中启动虚拟桌面会话,让QT程序能正常渲染UI:
在job步骤中添加:- name: Setup virtual desktop run: | # 启用远程桌面服务 Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0 net start termservice # 初始化会话 $null = New-Object -ComObject WScript.Shell Start-Sleep -Seconds 5之后再运行你的测试命令。
内容的提问来源于stack exchange,提问作者tftd
相关产品推荐
相关产品推荐

