找回密码
 立即注册
查看: 326|回复: 3

Jenkins使用Incredibuild构建UE4项目踩坑记录

[复制链接]
发表于 2022-6-13 19:26 | 显示全部楼层 |阅读模式
最近搞了Jenkins备份,在一台新机器上安装部署Jenkins。安装完成后打包报错,如下:
15:22:43   Running: D:\IncrediBuild\xgConsole.exe "C:\windows\system32\config\systemprofile\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+UE4+UE4\BuildCookRun\UAT_XGE.xml" /Rebuild /NoLogo /ShowAgent /ShowTime /no_watchdog_thread
15:22:43     Fatal Error: File not found: C:\windows\system32\config\systemprofile\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+UE4+UE4\BuildCookRun\UAT_XGE.xml
报错信息很明显,UAT_XGE.xml文件找不到。奇怪的是我这个文件明明就在那里,xgConsole.exe却找不到。于是使用procmon.exe监视UAT_XGE.xml访问记录,发现打开的路径为:
C:\windows\sysWoW64\config\systemprofile\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+UE4+UE4\BuildCookRun\UAT_XGE.xml
注意其中加粗字体,访问的是syswow64文件夹,看到这里想起来自己以前写得一篇文章,分析了重定向,不再赘述,点击链接可查看详情,和本问题有关的要点如下:

  • xgConsole.exe是32bit进程,访问system32会被重定向到syswow64
  • unrealbuildtool.exe是64bit进程,生成UAT_XGE.xml时system32不会发生重定向
基于以上两点,我们算是知道了为什么xgConsole访问不到UAT_XGE.xml了,那么根本原因是什么呢?
仔细看路径,在AppData\Roaming下,该路径一般是APPDATA环境变量控制的。由于unrealbuildtool和xgconsole进程均由jenkins拉起,所以可以查看jenkins进程的APPDATA环境变量,使用procexp.exe查看环境变量如下:
APPDATA        C:\windows\system32\config\systemprofile\AppData\Roaming
可以看见jenkins的APPDATA就是指向了这里。为什么APPDATA没在C:\Users\Administrator\AppData\Roaming下呢?
经过一番摸索,我找到了问题。jenkins运行的账户是SYSTEM,那APPDATA就会在system32下,如果运行账户是Administrator,APPDATA就不在system32下了,就不会发生重定向了。
找到原因就好了,如何更改这个账户呢?
其实很简单,在安装jenkins的时候,有这样一步:


只要选择下面这个选项就不会用SYSTEM账户启动服务了,如果下面这个选项无法测试通过,需要组策略里修改一下,允许该用户运行服务即可。
问题搞定,安装时因为偷懒选择了Run service as LocalSystem,最后却花费了更多时间来解决遇到的问题,not recommended现在是真的懂了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2022-6-13 19:33 | 显示全部楼层
这破烂居然还有 Windows 版本
发表于 2022-6-13 19:34 | 显示全部楼层
这破烂我用了好多年。有windows下更好的推荐吗?
发表于 2022-6-13 19:41 | 显示全部楼层
没用过 Windows 下面的。任何一个 CI 都肯定比 Jenkins 好
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 02:51 , Processed in 0.090577 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表