经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Jenkins自动构建Unity
来源:cnblogs  作者:smallrainf  时间:2019/4/22 8:41:13  对本文有异议

1.下载安装Jenkins

  链接:https://jenkins.io/

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脚本。

  1. public class Jenkins : Editor
  2. {
  3. private static string[] SCENES = FindEnabledEditorScenes();
  4.  
  5. private static string APP_NAME = "Jenkins";
  6. private static string TARGET_DIR = "E:/Project Files/Unity Project/2018.3/jenkins/Build";
  7. private static string JDK_DIR = "F:/Program Files/Java/jdk1.8.0_25";
  8. private static string ANDROID_SDK_DIR = "F:/AndroidSDK";
  9.  
  10. private static string[] FindEnabledEditorScenes()
  11. {
  12. List<string> EditorScenes = new List<string>();
  13. foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
  14. {
  15. if (!scene.enabled) continue;
  16. EditorScenes.Add(scene.path);
  17. }
  18. return EditorScenes.ToArray();
  19. }
  20.  
  21. [MenuItem("Jenkins/Auto Build")]
  22. public static void AutoBuild()
  23. {
  24. //Jenkins使用system账号,读取注册表路径为HKEY_USER;手动打开Unity使用user账号,读取注册表路径为HKEY_CURRENT_USER;
  25. EditorPrefs.SetString("jdkPath", JDK_DIR);
  26. EditorPrefs.SetString("AndroidSdkRoot", ANDROID_SDK_DIR);
  27.  
  28. string version = GetJenkinsParameter("Version");
  29.  
  30. string suffix = string.Empty;
  31. #if UNITY_STANDALONE_WIN
  32. suffix = ".exe";
  33. #elif UNITY_ANDROID
  34. suffix = ".apk";
  35. #elif UNITY_IOS
  36. suffix = ".ipa";
  37. #endif
  38.  
  39. string targetFilePath = TARGET_DIR + "/" + APP_NAME + "_" + version + suffix;
  40.  
  41. GenericBuild(SCENES, targetFilePath, EditorUserBuildSettings.activeBuildTarget, BuildOptions.None);
  42. }
  43.  
  44. public static void GenericBuild(string[] scenes, string target_dir, BuildTarget build_target, BuildOptions build_options)
  45. {
  46. BuildReport report = BuildPipeline.BuildPlayer(scenes, target_dir, build_target, build_options);
  47. Debug.Log(report);
  48. }
  49.  
  50. private static string GetJenkinsParameter(string paramName)
  51. {
  52. foreach (var command in Environment.GetCommandLineArgs())
  53. {
  54. if (command.StartsWith(paramName) == true)
  55. {
  56. return command.Split('-')[1];
  57. }
  58. }
  59. return string.Empty;
  60. }
  61. }

原文链接:http://www.cnblogs.com/smallrainf/p/10746152.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号