项目需要自动打包.策划想要以出包形式及时看到主干提交内容.(漏提交报错/少资源等问题仍然无法避免)
可见. 其中包含了 汉化,git,svn,ant,gradle等必要插件
创建管理员(不能使用默认名admin)
安装完成后,打开系统设置。
(似乎是因为安装目录有空格 变成了一个大坑 导致问题1 2)
要构架Unity脚本先要安装Unity插件,在插件管理–寻找插件–Unity 下载安装
增加全局变量 支持中文UTF8
配置Unity安装目录
创建一个自由风格的任务
配置源码管理 SVN地址和本地项目位置 SVN用户
这里疑似发生SVN目录的层级问题.实际项目目录并未跟Unity根目录同级别 .尝试编译.无法通过并创建了空的Assets 等目录
可能是是Jenkins SVN插件和本地SVN同时参与了工作目录导致的冲突
配置构建工具
写入构建命令行参数
1 使用Unity插件构建
2 使用bat命令行来构建
在Editor目录增加对应的Jenkis打包脚本 接受构建命令行参数来控制打包流程
@echo off set UnityPath="D:\Program Files\Unity\Editor\Unity.exe" echo Start Build Package REM BuildAssetBundle %UnityPath% -projectPath -quit -batchmode -logFile D:\tmp\build.log -executeMethod PerformBuild.CommandLineBuild ver-%SVN_REVISION% build-%buildoption% echo Build Package Finished if not %errorlevel%==0 ( goto fail ) else ( goto success ) :success echo Build Windows OK REM Copr Dir goto end :fail echo Build Windows Fail echo errorlevel = %errorlevel% goto end :end
对应的PerformBuild打包脚本
using System; using System.Collections.Generic; using UnityEditor; using UnityEngine; /// <summary> /// Jenkis打包工具配置脚本 /// </summary> public class PerformBuild { static string[] GetBuildScenes() { List<string> names = new List<string>(); foreach (EditorBuildSettingsScene e in EditorBuildSettings.scenes) { if (e == null) continue; if (e.enabled) names.Add(e.path); } return names.ToArray(); } static string path = "D:/tmp/"; /// <summary> /// 此方法是从jienkins上接受 数据的 方法 /// </summary> public static void CommandLineBuild() { try { Debug.Log("Command line build\n------------------\n------------------"); string[] scenes = GetBuildScenes(); string buildOption = GetJenkinsParameter("buildoption");//这里的路径是打包的参数定义 Debug.Log(buildOption); string ver = GetJenkinsParameter("ver");//这里的路径是打包版本定义 Debug.Log(ver); BuildOptions option = BuildOptions.None; if(buildOption == "dev") option = BuildOptions.Development; for (int i = 0; i < scenes.Length; ++i) { Debug.Log(string.Format("Scene[{0}]: \"{1}\"", i, scenes[i])); } //ProjectPackageEditor.BuildByJenkins(GetJenkinsParameter("Platform"), GetJenkinsParameter("AppID"), GetJenkinsParameter("Version"), GetJenkinsParameter("IPAddress")); Debug.Log("Starting Build!"); BuildPipeline.BuildPlayer(scenes, path + buildOption + "_" + ver, BuildTarget.StandaloneWindows, option); Debug.Log("Starting End!"); } catch (Exception err) { Console.WriteLine("方法F中捕捉到:" + err.Message); throw;//重新抛出当前正在由catch块处理的异常err } finally { Debug.Log("----------> I am copying! <--------------"); } } /// <summary> ///解释jekins 传输的参数 /// </summary> /// <param name="name"></param> /// <returns></returns> static string GetJenkinsParameter(string name) { foreach (string arg in Environment.GetCommandLineArgs()) { if (arg.StartsWith(name)) { return arg.Split("-"[0])[1]; } } return null; } }
增加构建后的操作
修改Jenkins 主目录 (失败,会导致jenkins配置失效无法启动的问题)
一、Windows环境更改Jenkins的主目录
Windows环境中,Jenkins主目录默认在C:\Documents and Settings\AAA\.jenkins 。
可以通过设置环境变量来修改,例如: JENKINS_HOME=C:\jenkins,然后重新启动jenkins。
Jenkins.xml 修改
env name=“JENKINS_HOME” value="%BASE%"
为
env name=“JENKINS_HOME” value="%JENKINS_HOME%"
http://localhost:8080/restart
cmd 命令行 到jenkins目录下启动服务 net start jenkins
问题汇总
1 Windows环境中,Jenkins可能会找不到绝对路径的目录.SVN配置的local moudle directory 会提示找不到路径.....改为使用默认路径 D:\Program Files (x86)\Jenkins\workspace\TestUnity(项目名)
傻傻的路径 拼接问题 " Couldn‘t set project path to: D:/Program Files (x86)/Jenkins/workspace/TestUnity/D:/鐗堟湰搴?/jenkins_out"
"Couldn‘t set project path to: D:/Program Files (x86)/Jenkins/workspace/TestUnity/jenkins_out" 路径名还不能有空格 使用 路径最好使用引号"D:\jenkins_out"
您需要格式化 -projectPath="D:\jenkins_out" 选项,并且在 -projectPath 之间使用等号和路径,而不是文档中指出的空格
2 Unity3d插件导致目录权限问题 改用bat命令行来进行打包
executeMethod class ‘PerformBuild‘ could not be found.
Argument was -executeMethod PerformBuild.CommandLineBuild
折腾一大圈最后确认时-projectPath配置应该是项目Assets上一级目录 .如果目录不正确则找不到PerformBuild脚本
Unity2018.3 + Jenkins 自动化打包方案(Windows)
原文:https://www.cnblogs.com/xiloweiEVE/p/13054785.html