TeamCity是 JetBrains旗下的一款持续集成(Continuous Integration,简称CI)工具,开箱即用。 下载链接 https://www.jetbrains.com/teamcity/
Windows下安装:
请确保系统中已经安装了maven和git软件,并正确配置了环境变量。这很重要。
Maven下载链接 https://maven.apache.org/download.cgi
Git 下载链接 https://git-scm.com/download/win
Build Agent:构建代理,实际代码集成构建的载体,默认和TC服务Server安装在同一台服务器上。TC支持多构建代理,TC Server可以连接不同服务器上的多个不同构建代理,协同工作。由于当前是在演练环境,请勾选。
Server:TC服务,主要承载TC的核心服务和web界面,请勾选。
同时,勾选Windows Service,安装windows服务。
默认端口是80 建议修改成其他端口 这里我使用了8111端口
都选择system 即可
开启服务
打开网址 http://localhost:8111/ 一直下一步进行配置即可
安装就到此结束
现在我们就开始unity的设置
既然要自动化打包构建unity项目 那么首先我们需要有一个unity项目
新建一个Unity项目 名字叫做 TeamCityUnity 这里我使用的unity 版本是2018.4.1f1 不过版本并不重要 随意即可
场景内直接创建一个text 输入Test TeamCity 保存场景 测试场景就创建完毕了
现在我们开始写打包脚本
Project界面下新建Editor文件夹 在Editor下新建TestBuild脚本
新建函数 BuildApk 函数必须是静态函数
public static void BuildApk()
{
var outdir = System.Environment.CurrentDirectory + "/BuildOutPutPath/Android";
var outputPath = Path.Combine(outdir, Application.productName + ".apk");
//文件夹处理
if (!Directory.Exists(outdir)) Directory.CreateDirectory(outdir);
if (File.Exists(outputPath)) File.Delete(outputPath);
//开始项目一键打包
string[] scenes = new[] {"Assets/Scenes/SampleScene.unity"};
UnityEditor.BuildPipeline.BuildPlayer(scenes, outputPath, BuildTarget.Android, BuildOptions.None);
if (File.Exists(outputPath))
{
Debug.Log("Build Success :" + outputPath);
}
else
{
Debug.LogException(new Exception("Build Fail! Please Check the log! "));
}
}
因为是在windows电脑上演示 所以就不能打包IOS 的Ipa包了 不过可以打包Xcode 工程 只需要将BuildTarget修改一下即可
差点忘记了重要的部分关于PlayerSetting 的设置此处就不在赘述 不会的请自行百度
这里直说一点 因为我们这里使用的是Gradle方式进行打包 所以需要创建一个KeyStore文件
可以使用AndroidStudio 或 Eclipse 进行创建
然后代码中 添加对KeyStore的配置 直接写在函数最上方即可
PlayerSettings.Android.keystoreName = "文件完整路径";
PlayerSettings.Android.keystorePass = "密码";
PlayerSettings.Android.keyaliasName = "别名";
PlayerSettings.Android.keyaliasPass = "别名密码";
我们这里现在本地测试一遍 打包是否可以成功 Editor文件夹下 新建测试脚本Test
public class Test
{
[MenuItem("Build/BuildApk")]
public static void BuildApk()
{
TestBuild.BuildApk();
}
}
回到Unity界面 点击菜单上的buildApk
打包成功
我这里项目的版本管理使用的是github托管 将我这个项目上传到github
现在我们直接打开网页
http://localhost:8111/
终于走到了正题
首先 创建项目
填入刚才创建的项目的git地址
填入项目名和build
当git拉取完毕后 会自动分析项目是什么项目 不过分析的可能不准 所以
配置插件
点击右上角
左侧菜单拉到最底下 点击Plugins List
点击Browse
点击 Proceed
搜索Unity
安装到本地
然后启用插件
现在就已经完成了unity 插件的配置
不过也许你正好就可以用了 但是你也可能遇到问题 这里的Unity 插件搜索的unity 目录 是默认在
Program Files下搜索 Unityx.x.x
所以如果你的unity 安装目录是在其他目录 你的agent 可能就会告诉你 不兼容unity项目 所以我们需要配置unity 路径 我们先看一下插件的官网是怎么说的
ok 所以我们现在只需要根据上面所说 配置UNITY_HOME(UNITY_HINT_PATH)即可
解决了这个问题 我们现在就可以来配置Unity 的Step了
点击项目 选择刚才创建的build
编辑这个build 配置
新建一个步骤
新建unity 步骤
这里只需要配置打包函数即可 选择我们刚才写的函数 保存即可
点击run 即可
然后你会发现成功了 但是我现在要告诉你的是 这里的success 的意思只是打包步骤执行成功了 打没打包可不一定 里面的报错 我们要去看Build Log
点击success 点击Build Log
还记得我们在打包函数里输出了build 是否成功 我们先找到输出
很不幸 打包失败了 不过 打包失败并不可怕 我们来找到失败的原因是什么
查了错误的原因 是因为sdk找不到 但是我们在unity内测试已经打包成功了 怎么会找不到sdk呢
经过一番查询 我终于找到了解决方法 需要配置sdk路径
打开配置表
在配置表中增加一行
env.ANDROID_HOME= SDK的路径 保存 agent 会自动检测更新配置
现在我们再次运行
成功了。 现在安装apk 到手机上看看是不是我们做的测试apk
ok 大工告成
这里我遇到的问题也没有什么参考资料 只能靠百度 google 自己去查找错误 也是这样自己的印象也是很深刻
如果你在使用的时候遇到了其他的问题 如果百度 google 找不到的话 欢迎和我一起讨论 QQ 2474252111