Unity3D研究院之Jenkins的使用(七十八)
长夜漫漫无心睡眠,来一篇嘿嘿。我相信如果已经用Shell脚本完成IOS和Android打包的朋友一定需要Jenkins
怎么才能让策划打包ipa和apk?怎么才能彻底省去程序的时间,只要在同一局域网内不需要unity的开发环境,只要它有浏览器,它就能打包Jenkins无疑是最佳选择。
Unity3D研究院之IOS全自动编辑framework、plist、oc代码(六十七)
Unity3D研究院之Android全自动打包生成apk(六十九)
首先要先找一个打包专用的电脑最为打包用的服务器,这电脑最好是MAC因为Windows不能打IOS的包。在这电脑上部署jenkins和Unity的开发环境,让Jenkins去执行我们写好的全自动打包shell脚本。同时Jenkins会生成一个局域网内部的可视化网站,这样让策划登录上去自己去执行打包的操作。
Jenkins的安装方式有两种
方式一:http://jenkins-ci.org/ 在官网上直接下载MAC的dmg安装包 安装完毕后即可在本机完成搭建jenkins的工作。但是jenkins不会用你本机的用户去构建,啥意思的就是jenkins不能打开unity,也调不了unity里面自己写的脚本方法。
http://blog.csdn.net/wirelessqa/article/details/8647771 可以按这篇文章的方法来解决。
#停止Jenkins
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
# 修改group 和user
$ sudo vim +1 +/daemon +’s/daemon/staff/’ +/daemon +’s/daemon/bixiaopeng’ +wq org.jenkins-ci.plist
$ sudo chown -R bixiaopeng:staff /Users/Shared/Jenkins/
# 开始Jenkins
$ sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
意思就是你要把org.jenkins-ci.plist里面的GroupName和UserName改成你自己的。

你可以在偏好设置里面。

然后就可以看到你的Group(群组)和UserName(账号名称) 我的Group就是 staff 我的 UserName就是 MOMO

方式二:用brew安装
执行 brew install jenkins 你会看到安装的一些信息。
等安装好以后在执行
java -jar /usr/local/opt/jenkins/libexec/jenkins.war
在浏览器里面打开 http://localhost:8080/ 局域网内别人可以打开http://”你的ip”:8080/

选择参数化构建过程,这里可以是增加一些让策划操作的选项。
然后增加构建步骤,选择Execute Shell 也就是执行Shell脚本。Command里面就是需要执行的脚本以及参数。/Users/MOMO/test.sh 就是shell脚本的在本机的全路径,$version就是在上图中把策划选择的版本号传递给shell脚本中。

选择Build with Parameters 右边选择一个版本号也就是上面我们配置的参数。 点击开始构建就OK了。构建完成后可以在下面选择Console Output来查看构建的完整Log
Log在这里

另外jenkins提供了账号系统,最好给用的人注册一下账号,不然谁都能http://”你的ip”:8080/ 这个页面点一点就不好了。

shell脚本
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/bin/sh
echo "start"
#unityapp的路径
export untiy=/Applications/Unity4.5.1/Unity.app/Contents/MacOS/Unity
#项目路径
export projectPath=/Users/MOMO/TestUnity
#把所有=后面的参数取出来
for a in $*
do
r=`echo $a | sed "s/--//g"`
eval $r
done
#这里就可以拿到jenkins传递进来的参数了
echo "version = $version"
#打开unity3d 执行MyEditorScript.MyMethod 方法。
#unity产生log就写在tmp/1.log里面,比如Debug.Log和Unity编辑器产生的。
$untiy -quit -batchmode -projectPath $projectPath -logFile /tmp/1.log -executeMethod MyEditorScript.MyMethod "$version"
|
对应unity里面还有有接收shell调用的地方。MyEditorScrip这个类放在Editor目录下面即可。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using UnityEditor;
using UnityEngine;
class MyEditorScript
{
static void MyMethod ()
{
string executeMethod = "MyEditorScript.MyMethod";
foreach(string arg in System.Environment.GetCommandLineArgs()) {
Debug.Log(arg);
}
}
}
|
字码的差不多了。另外在shell脚本里面还可以用svn up svn ci 等命令来执行更新以及上传的操作,Jenkins都快用起来吧。
Unity3D研究院之Jenkins的使用(七十八)的更多相关文章
- (七十八)使用第三方框架INTULocationManager实现定位
前面(第七十五.七十六篇)讲述了如何通过CoreLocation获取位置,授权.获取等相当复杂,如果借助于第三方框架,可以简单的实现授权与定位. 首先在GitHub中搜索LocationManager ...
- 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...
- 第五百七十八、九天 how can I 坚持
这样下去不行啊 ,昨天晚上回来捣鼓了一晚上手机,看个视频还经常开小差,得全力以赴了,不能抱着打酱油的心态了,加油. 今天和yj聊了聊,好多事啊,不能一心工作了,还得考虑结婚,也是醉了. 努力吧,先把考 ...
- salesforce零基础学习(七十八)线性表链形结构简单实现
前两篇内容为栈和队列的顺序结构的实现,栈和队列都是特殊的线性表,线性表除了有顺序结构以外,还有线性结构. 一.线性表的链形结构--链表 使用顺序存储结构好处为实现方式使用数组方式,顺序是固定的.所以查 ...
- Java开发笔记(七十八)面向对象的后门——反射
作为一门面向对象的编程语言,Java认为一切皆是对象,每个对象都能归属于某个类,甚至每个类均可提取出一种特殊的类型,即Class类型.早在前面介绍多态的时候,就提到每个类都存在独一无二的基因,通过比较 ...
- 第七十八课 最短路径(Dijkstra)
核心思想是从已知的最短路径推算未知的最短路径. 添加程序: #ifndef GRAPH_H #define GRAPH_H #include "Object.h" #include ...
- leecode第七十八题(子集)
class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vect ...
- 【leetcode 简单】 第七十八题 Nim游戏
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解. 编写一个函数,来判断你 ...
- 一起talk C栗子吧(第七十八回:C语言实例--创建进程)
各位看官们,大家好.上一回中咱们说的是DIY ls命令续的样例.这一回咱们说的样例是:创建进程.闲话休提.言归正转. 让我们一起talk C栗子吧! 看官们.关于进程的概念,我们简单做个简单的介绍:进 ...
随机推荐
- Node服务一键离线部署
背景说明 项目测试通过,到了上线部署阶段.部署的机器安全限制比较严格,不允许访问外网.此外,没有对外网开放ssh服务,无法通过ssh远程操作. 针对上面提到的两条限制条件,通过下面方式解决: 无法访问 ...
- 浅析C#中的“==”和Equals
1.“==”和Equals两个真的有关联吗? 对于“==”和Equals大多数网友都是这样总结的: “==” 是比较两个变量的值相等. Equals是比较两个变量是否指向同一个对象. 如:这篇文章,并 ...
- python3 入门 (二) 列表的使用
列表用于组织其它数值,即写在方括号之间.用逗号分隔开的数值列表.列表内的项目不必全是相同的类型. 列表的定义 student = ['Tom', 'Jack', 'Avril'] 添加元素 将另一个列 ...
- VS2008+GDI实现多幅图像的GIF动画制作
相信很多朋友和我一样,经常由于这或那的原因,需制作一些特定格式的图像.如开发过程中需要给菜单.工具条及按钮等添加对应的图形标识,通过代码或资源导入方式加载这些图像时往往会有较高的格式要求. 比如,为按 ...
- mongo里面根据对象字段的ID查询 db.Photo.find({'owner.$id':ObjectId('xxxx')}) , 并且使用forEach循环修改查询的数据
var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find ...
- jQuery应用之(一)使用jQuery选择器(荐)
如上文(地址)jQuery预先的javascript的编程,提供了计划所有css3下的标准选择器,开发者可以利用这些选择器轻松选择各种元素,供javascript使用. 重要的是jQuery对这些选择 ...
- OC基础--block
block与函数类似:1.可以保存代码 2.又返回值 3.有形参 4.调用方式一样 block的标志:^ 一.定义一个无参无返回值的block void (^myBlock)();--1.void 代 ...
- Maven-本地安装
本文测试安装maven3 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Maven是 Apache 下的一个项目,目前最新版本是 3.0.4,我用的也是这个. 首先去官网下载 ...
- 45.Android 第三方开源库收集整理(转)
原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, ...
- BZOJ-1206 虚拟内存 Hash+离散化+Priority_Queue
闻说HNOI每年都有一道Hash. 1206: [HNOI2005]虚拟内存 Time Limit: 50 Sec Memory Limit: 162 MB Submit: 330 Solved: 2 ...