大纲
- runner的搭建
- 异常
- 乱码
- checkout的问题
- GitDependencies
- vs 2019的编译日志输出到ci
runner的搭建
按照wiki的说明搭建基本的runner
异常
- 长路径
https://docs.microsoft.com/zh-cn/windows/win32/fileio/naming-a-file#maximum-path-length-limitation
打开注册表(使用cmd
regedit
打开)将以下值改为 1 即可!
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (Type: REG_DWORD)
因为使用的是CI
,还需要对git runner
进行处理
before_script:
- git config --system core.longpaths true
乱码
[[runners]]
executeer = "shell"
shell = "powershell"
pre_clone_script = "chcp 65001"
pre_build_script = "chcp 65001"
checkout的问题
防止ci
每次对已经Setup
完成的项目进行清理
variables:
GIT_STRATEGY: fetch
GIT_CHECKOUT: "false"
GitDependencies
在执行setup.bat
的时候,会遇到File.Create
字符长度超260的异常,,经过n轮查找,是File.cs
中已经对useLongPath = false
了;所以最简单的方法是将全路径改短;(我这里最大长度是264,刚好改一下文件后缀就可以了!)
在ue的源码中,找到{源码}\Engine\Source\Programs\GitDependencies
工程的Program.cs
文件,找到const string IncomingFileSuffix = ".incoming";
改成以下这样后重新编译生成GitDependencies.exe
,
IncomingFileSuffix = ".b";
将生成的GitDependencies.exe
【位置在\Engine\Source\Programs\GitDependencies\bin\Development
下】;覆盖到\Engine\Binaries\DotNET
下就可以了!
补充
咨询了一下ue的大佬,在修改windows
的长路径支持后,在Unreal Editor
下也开启长路径支持就可以了!
在注册表中找到一下的路径,将这个值改为1即可
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (Type: REG_DWORD)
在Unreal Editor
的Editor Preferences
中开启Enable Support for long paths
就可以(未测试,但是大佬说可以,那就应该是没有问题!)
但是以上这种都是需要有视图的,我不可能打开远程打包机器改配置吧?所以还是需要能通过改配置文件的形式修改!
Engine\Config\BaseEditorPerProjectUserSettings.ini
[/Script/UnrealEd.EditorExperimentalSettings]
bEnableLongPathsSupport=True
如果是项目性质的,就可以在Saved\Config\Windows\EditorPerProjectUserSettings.ini
下
[/Script/UnrealEd.EditorExperimentalSettings]
bEnableLongPathsSupport=True
vs 2019的编译日志输出到ci
直接使用devenv.exe
是不能输出到console
的,必须要是用devenv.com
才可以!
variables:
VS_PATH: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/devenv.com"
...
script:
- echo $VS_PATH
- echo $CI_PROJECT_DIR
- "& \"$VS_PATH\" \"${CI_PROJECT_DIR}/UE4.sln\" \"/build\" \"Development Editor|Win64\" \"/Project\" \"UE4\""
- echo "UE_Build Finish"
到此位置,已经全部流程跑完,已经没有问题了!