赞
踩
系统:Windows 11
Jenkins:2.361.2
Unity:2021.3.4f1
git: 2.34.1
官网
https://www.jenkins.io/zh/
安装中的注意事项:
Logon Type 登录类型可以设置为LocalSystem(not recommended) 可以后续再更改
端口的设置要是选一个未被占用的
开启和关闭jenkins的dos命令行
net start jenkins
net stop jenkins
用浏览器进入 localhost:安装设置的端口
第一次登入会提示解锁Jenkins,密码是在当前页面直接提示的计算机位置,找到之后,用文档格式打开,粘贴即可。
插件安装
安装推荐的插件即可,部分需科学上网,或者跳过。
我们需要用的插件主要是Unity3d plugin、git相关的插件
设置账户密码,登录。
或者在登录之后主页Manager Jenkins>Manager Plugins 也可以安装卸载插件
Jenkins 全局配置
Manager Jenkins>Global Tool Configuration
JDK:需要配置系统Path 环境变量,然后把Java_home填入
Git:安装后自动获取
Unity3d: 安装目录选择Editor目录的根目录,如 C:\Unity\2021.3.4f1c1
-batchmode
在批处理模式下运行Unity。应始终与其他命令行参数一起使用,因为它确保不会弹出窗口,无需任何人为的干预。当脚本代码在执行过程中发生异常,资源服务器更新失败或其他操作失败时Unity将立即退出,并返回代码为1。请注意,在批处理模式下, Unity将向控制台发送输出版本最小的日志。当然,日志文件将包含完整的日志信息。
-quit
其他命令执行完毕后将退出Unity编辑器。请注意,这可能会导致错误消息被隐藏(但他们将显示在Editor.log文件)
-createProject
根据提供的路径建立一个空项目
-projectPath
打开指定路径的项目
-logFile
指定 Unity 写入编辑器或 Windows/Linux/OSX 独立日志文件的位置
-exportPackage
导出一个包,给定一个路径(或一组给定的路径)。在本例中,exportAssetPath是要从 Unity 项目导出的文件夹(相对于 Unity 项目根目录),exportFileName是包名称。此选项一次仅导出整个文件夹。您通常需要将此命令与-projectPath参数一起使用。
-executeMethod <ClassName.MethodName>
一旦 Unity 打开项目,并且在可选的资产服务器更新完成后,立即执行静态方法。您可以将其用于诸如持续集成、执行单元测试、构建或准备数据之类的任务。
要从命令行进程返回错误,请抛出导致 Unity 以返回代码 1 退出的异常,或者使用非零返回代码调用EditorApplication.Exit。
要传递参数,请将它们添加到命令行并使用System.Environment.GetCommandLineArgs. 要使用-executeMethod,将封闭脚本放在 Editor 文件夹中,执行的方法必须定义为静态的。
参考:https://docs.unity3d.com/cn/current/Manual/EditorCommandLineArguments.html
主页>新建任务>输入任务名称>Freestyle project> 确定
General> 勾选 This project is parameterized (参数化)
高级> 勾选 使用自定义的工作空间
需注意的是Jenkins中变量的使用是$ 而不是%%
源码管理
勾选git
输入git仓库地址,访问用的账户密码 如果是ssh 需要输入密钥,选择分支
这样配置就可以自动更新分支到最新,但是会脱离远端,想重新推送需要手动切换分支
Build Steps
Editor command line arguments
输入语句(其他的帖子使用的都是%%引用变量,尝试多次之后发现使用$才能正确引用)
-quit -batchmode -projectPath $WORKPATH -executeMethod BuildTool.BuildAndroid -logFile "I:\output.log"
-executeMethod 脚本名.方法名
Unity 编辑器代码参考
public static void BuildAndroid()
{
BuildPlayerOptions options = new BuildPlayerOptions();
options.scenes = new string[]
{
"Assets/Scenes/SampleScene.unity"
};
options.locationPathName = Application.dataPath + "/../Build/test.apk";
options.target = BuildTarget.Android;
options.options = BuildOptions.None;
BuildPipeline.BuildPlayer(options);
}
Jenkins参数化到Unity的使用
Jenkins
设置变量
变量的使用
Unity:
//获取控制台输入的信息
string[] args = System.Environment.GetCommandLineArgs();
foreach (var s in args)
{
if (s.Contains("--Name:"))
{
temp = s.Split(':')[1];
// 设置app名字
PlayerSettings.productName = temp;
}
}
保存后回到任务界面,点击Build,成功后左下角会出现绿色的标,红色X为错误,看控制台信息解决。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。