MyException - 我的异常网
当前位置:我的异常网» 操作系统 » IOS使用Jenkins开展持续集成

IOS使用Jenkins开展持续集成

www.MyException.Cn  网友分享于:2015-08-26  浏览:1次
IOS使用Jenkins进行持续集成

本文主要讲述在开发过程中,提高工作效率而进行的IOS-Jenkins的持续集成。

背景

平时我们开发完成IOS项目,需要打包给测试人员进行测试。其中的过程需要重复进行:修改配置项--编译---连接设备--运行打包--debug进设备中--然后交给等待的测试人员。现有成熟的持续集成Jenkins解决方案,并且该方案也提供了Xcode插件的支持,可以讲上述过程封装成一键解决方案。

我实现的是jenkins执行IOS的job,build工程,签名打ipa包,上传到FTP服务器,放到tomcat下,提供http下载安装app。

过程

1.下载安装jenkins

官网地址:https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins#InstallingJenkins-Unix%2FLinuxInstallation

下载之后,是个war包(后台服务),是要求有jdk的。

然后直接点击jenkins.war即可运行,访问http://localhost:8080/即可

也可通过命令行运行 java -jar jenkins.war --httpPort=8888;http://localhost:8888/

也可以放到tomcat下面。

运行起来后,会在user下创建一个.jenkins目录。

2.增加Xcode插件

在jenkins的系统管理中,找到管理插件,可选插件的tab下搜索xcode,勾选安装,安装插件/升级处等待—jenkins升级到最新版本了,xcode插件更好安装(如果失败请下载最新的jenkjins,或者多尝试几次)。

这样重启jenkins的话,就会在job的构建中下拉选择处看到xcode的支持选项。

3.新建job

新建一个free的job.


4.源码管理

如果使用svn,选择subversion,直接指向地址即可;如果没有使用svn,选择none,则需要先运行下job,这样jenkins的工作目录就创建了一个结果failed的job,目录为.jenkins/jobs/你的job名字/。这时候,job下的目录还有builds,workspace等目录文件,我们需要的就是往workspace中放入我们的代码工程(这是官方的解决方案)。

目录结构见下图。

这样workspace中就有了代码。

5.构建xcode项目

在增加构建步骤下拉中选择xcode。

如上图,简单配置参数,执行项目的target,Configuration为Debug(看情况选择Release),下面还有个Pack application and build .ipa选项,这个我没选。

下面还有个Code signing和钥匙链的选项,可以不填,会自动找默认的(项目中配置的吧,可以在运行时的console中看到执行的日志,输出中会有每一步做什么了)。

在下面还有个xcode的高级参数配置,如图:

scheme配置,以及需要build运行的SDK,这里选择iphoneos(这是要准备在真机上运行),还有构建的输出目录。

在这里说下模拟器的事项,这里不能配置成iphonesimulator,是因为没用,模拟器不能运行起来的,首先苹果unix命令能够启动模拟器,但是没有提供api来命令行方式往模拟器中安装ipa程序并运行(xcodebuild命令没有这个支持),上网找了个解决方案,发现是很久之前的了,4年前的,有个github的提供的插件,但是这个插件工程需要依赖iPhoneSimulatorRemoteClient.framework这个库,而现在的mac都搜不到这个库,所以不能运行,so命令行方式启动模拟器,并安装运行ipa的方式不行了,只能真机方式来了。

运行job,此时应该能出现当前的目录文件,那个ipa还出不来呢。

现在到这,说明jenkins的这个IOS的job已经能够基本ok了。

6.接着我们来实现打包ipa文件

上面那个xcode配置 pack application and build ipa我没选,那个还没搞清楚,它的输出目录上下文变成jenkins了,而实际生成的ipa在xcode的安装目录的很隐蔽的目录,这个暂时没搞清呢。

而我是通过shell来做的,命令行方式。

选择增加构建步骤,点击shell的,然后出现个命令行的输入框,见图。

按照图上的命令,选择sdk 打包app 指定输出目录文件,这样就能在build完成后出现上上图目录结构中的ipa文件,这个就是我们需要的安装程序了,经过签名的能再真机安装的。具体指定增加签名和描述的命令请看xrun的命令说明。

ok,我们已经完成了一大步了。

7.现在我们再来设置上传ftp的功能

mac电脑本身支持ftp服务的,并且发现了一个修改系统的便捷软件,lion tweaks,

找到右侧的ftp,开启即可。

我们需要设置一下jenkins的系统配置--系统管理链接在根路径左侧,点开然后选择系统设置,下来找FTP的配置项,见图:

我设置的自己电脑,所以localhost了。设置ftp的根路径root repository path,填入本机的用户名密码。

如图设置自己job的ftp服务,

见图,设置需要上传的文件以及其相应的目录,现在ipa程序文件的上传,我们需要将build目录生成后的ipa文件上传到ftp服务器的一个目录,我们为了后续通过tomcat服务进行手机下载,所以上传到tomcat的目录下。

上传成功会在tomcat下有此目录结构,见图:

这样我们上传文件到ftp服务器的就实现了。

8.Tomcat服务

然后我们需要设置tomcat服务,以方便手机可通过网页下载并安装我们的应用。

下载tomcat,进入tomcat的bin目录,执行命令,

sh startup.sh

启动tomcat。

新建一个简单的web项目,这个请简单看下web自己实现,然后放到tomcat的webapps下面,修改tomcat的访问端口8088,与jenkins8080冲突,这样我们访问tomcat的时候,

就能访问到我们的项目,http://localhost:8088/hello_jenkins2/index.jsp。

9.下载支持文件

现在说明我们的jenkins的job的ftp其他文件上传是干嘛,ios_down.html是提供一个网页,可以点击一个链接从而下载安装程序到手机。而相对的那个hello_jenkins.plist文件则是支持ipa文件下载到手机的文件。

ios_down的链接协议指向这个plist,

<a href="itms-services://?action=download-manifest&url=http://192.168.200.124:8088/hello_jenkins2/publish/hello_jenkins.plist"><h2>Install</h2></a>

这个hello_jenkins.plist里面说明并指向ipa

内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>items</key>
   <array>
       <dict>
           <key>assets</key>
           <array>
               <dict>
                   <key>kind</key>
                   <string>software-package</string>
                   <key>url</key>
                   <string>http://192.168.200.124:8088/hello_jenkins2/static/build/Debug-iphoneos/HelloJenkins.ipa</string>
               </dict>
           </array>
           <key>metadata</key>
           <dict>
               <key>bundle-identifier</key>
               <string>com.hai.HelloJenkins</string>
               <key>bundle-version</key>
               <string>1.0</string>
               <key>kind</key>
               <string>software</string>
               <key>subtitle</key>
               <string>HelloJenkins</string>
               <key>title</key>
               <string>HelloJenkins</string>
           </dict>
       </dict>
   </array>
</dict>
</plist>

这样,浏览网页ios_down.html的时候,点击上面的install标签,则指向hello_jenkins.plist文件,并解析再定位到ipa文件,手机同时提示下载安装hello_jenkins了,下载安装即可。

10.完成

手机访问

http://192.168.200.124:8088/hello_jenkins2/publish/ios_down.html

我的已经安装到手机了,就不发图了。


11.最后注意一些问题

注意路径问题,如果job的ftp文件上传路径,html文件和plist文件的路径有一点不对,都会造成无法访问等下载不了问题。

还要注意安装程序的base sdk与真机的兼容性,否则安不上。

注意ftp的上传目录是基于我们系统设置的用户目录下的。

还有就是如果上传文件的目录没对上,jenkins是不报错的,而输出日志提示not found 文件,所以多看看job的日志。

还有就是有时候plist文件明明是对的但是就是显示无法访问,请试试copy一份别处的plist文件,在修改内容,我的曾经出现过,copy一份就好了。



ps:

网上这方面的不多,自己花时间研究了下,奉献给大家了,还有一些疑点没弄清,后续再补充了。





1楼love_monkey9小时前
沙发......

文章评论

看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
我的丈夫是个程序员
我的丈夫是个程序员
一个程序员的时间管理
一个程序员的时间管理
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员应该关注的一些事儿
程序员应该关注的一些事儿
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Java程序员必看电影
Java程序员必看电影
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员必看的十大电影
程序员必看的十大电影
中美印日四国程序员比较
中美印日四国程序员比较
为什么程序员都是夜猫子
为什么程序员都是夜猫子
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
总结2014中国互联网十大段子
总结2014中国互联网十大段子
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
那些争议最大的编程观点
那些争议最大的编程观点
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
 程序员的样子
程序员的样子
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
鲜为人知的编程真相
鲜为人知的编程真相
程序员和编码员之间的区别
程序员和编码员之间的区别
编程语言是女人
编程语言是女人
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
漫画:程序员的工作
漫画:程序员的工作
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
每天工作4小时的程序员
每天工作4小时的程序员
程序员都该阅读的书
程序员都该阅读的书
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何成为一名黑客
如何成为一名黑客
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
老程序员的下场
老程序员的下场
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
10个调试和排错的小建议
10个调试和排错的小建议
旅行,写作,编程
旅行,写作,编程
我是如何打败拖延症的
我是如何打败拖延症的
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有