原因
由于公司专用的CI服务器是linux的,导致 Unity 相关的CI任务无法在CI服务器上执行,所以专门找了个Windows 的机器来执行 Unity 相关CI任务。
但是那台 Windows 机器配置比较低,导致编译时间很长,尤其是加上CI后经常出现编译排队的情况。因为之前不知道在什么地方看到过Unity出了linux版本,所以受不了等待的我开始折腾如何在Linux上执行 Unity CI任务。
技术方案
通过使用 ssoor/unity3d:2017.4.8f1-android 镜像使用镜像中的Unity 命令执行编译来执行CI任务。
image: ssoor/unity3d:2017.4.8f1-android
由于公司没有Unity的正版授权,加上Unity个人账号创建的授权和主机名绑定导致 unity 授权没办法通过,最后没辙破解了Unity 文件。
所以这个镜像是破解过的,如果使用官方镜像的话是没办法通过docker来执行的。
编译的时候就和windows 上使用命令一致了,需要注意的是镜像是不包含界面的,所以要使用 xcfb-run 来执行命令。
有了可执行命令之后就可以修改CI脚本在Linux服务器上执行了,具体怎么修改由于每个CI都不一样这里就不放出来了。
core@localhost ~ $ docker run -ti -v /root/src/csclient:/build ssoor/unity3d:2017.4.8f1-android
/ # # 执行编译
/ # xvfb-run --auto-servernum --server-args='-screen 0 640x480x24' /opt/Unity/Editor/Unity \
-quit \
-batchmode \
-logFiledocker \
-projectPath "/build/src" \
-executeMethod "BuildExport.PerformModuleAndroidResource"

为解决Unity项目在CI流程中遇到的Windows机器配置低、编译时间长的问题,本文介绍了一种在Linux环境下使用ssoor/unity3d Docker镜像进行UnityCI任务的方法,包括破解Unity授权、使用xvfb-run执行无界面编译等关键步骤。
361

被折叠的 条评论
为什么被折叠?



