Jenkins自动构建Unity
Posted smallrainf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins自动构建Unity相关的知识,希望对你有一定的参考价值。
1.下载安装Jenkins
2.安装推荐plugins
NOTE:安装失败的话,后面进入管理plugins的高级选项中,将更新站点设置为:http://mirror.xmission.com/jenkins/updates/current/update-center.json。
2.1.安装Unity3d plugin。
3.创建新任务
3.1.在Configure中新增build step,选择Unity,设置命令行参数-quit -batchmode -projectPath "E:/Project Files/Unity Project/2018.3/jenkins" -executeMethod Jenkins.AutoBuild -logFile build.log Version-$Version。
3.2.build environment中勾选Add timestamps to the console output,为每个命令输出添加时间戳,方便后期查找。
3.3.设置SVN版本控制
3.4.新增命令行参数,其中参数以$Version的形式存在
3.5.丢弃旧的构建,保证磁盘不会出现占满的情况。
4.添加Unity Editor脚本。
public class Jenkins : Editor { private static string[] SCENES = FindEnabledEditorScenes(); private static string APP_NAME = "Jenkins"; private static string TARGET_DIR = "E:/Project Files/Unity Project/2018.3/jenkins/Build"; private static string JDK_DIR = "F:/Program Files/Java/jdk1.8.0_25"; private static string android_SDK_DIR = "F:/AndroidSDK"; private static string[] FindEnabledEditorScenes() { List<string> EditorScenes = new List<string>(); foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes) { if (!scene.enabled) continue; EditorScenes.Add(scene.path); } return EditorScenes.ToArray(); } [MenuItem("Jenkins/Auto Build")] public static void AutoBuild() { //Jenkins使用system账号,读取注册表路径为HKEY_USER;手动打开Unity使用user账号,读取注册表路径为HKEY_CURRENT_USER; EditorPrefs.SetString("jdkPath", JDK_DIR); EditorPrefs.SetString("AndroidSdkRoot", ANDROID_SDK_DIR); string version = GetJenkinsParameter("Version"); string suffix = string.Empty; #if UNITY_STANDALONE_WIN suffix = ".exe"; #elif UNITY_ANDROID suffix = ".apk"; #elif UNITY_ios suffix = ".ipa"; #endif string targetFilePath = TARGET_DIR + "/" + APP_NAME + "_" + version + suffix; GenericBuild(SCENES, targetFilePath, EditorUserBuildSettings.activeBuildTarget, BuildOptions.None); } public static void GenericBuild(string[] scenes, string target_dir, BuildTarget build_target, BuildOptions build_options) { BuildReport report = BuildPipeline.BuildPlayer(scenes, target_dir, build_target, build_options); Debug.Log(report); } private static string GetJenkinsParameter(string paramName) { foreach (var command in Environment.GetCommandLineArgs()) { if (command.StartsWith(paramName) == true) { return command.Split(‘-‘)[1]; } } return string.Empty; } }
以上是关于Jenkins自动构建Unity的主要内容,如果未能解决你的问题,请参考以下文章
最新Jenkins自动化打包构建经验分享(云效+Jenkins+Unity)
通过Jenkins自动化构建Unity-Android-AAB包
游戏开发进阶教你Unity通过Jenkins实现自动化打包,打包这种事情就交给策划了(保姆级教程 | 命令行打包 | 自动构建)
游戏开发进阶教你Unity通过Jenkins实现自动化打包,打包这种事情就交给策划了(保姆级教程 | 命令行打包 | 自动构建)