上一篇,自己尝试进行持续集成,研究的不深入,这两天,为公司搭建持续集成环境,以及内部发布系统,了解的更多了,所以分享出来。
这篇主要介绍一些其他东西,不重复介绍上一篇的内容。
如果使用jenkins进行ios持续集成,需要xcode插件支持,所以先下载xcode插件,而且后期还要用到ftp服务,也安装ftp的插件。
jenkins中可以自己创建特定的视图分组,all视图点击+号就能创建新视图,创建好后,在左侧的编辑视图选项,则会进入详情页,可以选择放入此视图的任务;相对于任务,我觉得最好依据代码svn地址,一般代码是分版本储存在不同位置,所以我们的任务也指向的一个版本,我是任务区分的版本号,例如 xxx_iphone_dev_2.5.0.
下面讲述IOS任务中的一些配置
1.一般勾选丢弃旧的构建,这样会清理build文件夹。
2.源码管理,一般使用Subverison,
Respository url,这是设置你的代码的svn地址,控制好访问到哪一个文件夹。
Local module directory (optional),这是让你自己设置代码存储到本地工作区的自定义目录,如果不写,则代码直接放在当前工作区目录下;如果自定义目录,则会在工作区创建这个目录结构,
然后代码存储到这个目录下。
源码管理,允许你下载多个地址的代码,点击add more locations...。
具体看图,一看就明白。
不同的代码下载到不同的目录,实际文件结构如下图。
一般,代码checkout策略,update就行。
3.触发器没加呢,可以设置每天几点触发构建,这个比较好,看自己需要。
4.增加xcode构建步骤
这里需要注意你的xcode工程的类型,和svn地址。
一般如果你的工程是单一的project,则好说,像下面,写个工程内的target,
打ipa包,写入ipa包名称,不用加.ipa,jenkins自动加上,输出目录,这里需要说下,jenkins中有很多地方都要匹配正确目录结构,大家可以看jenkins任务执行的日志看哪里出错,更可以看
实际的物理文件,/Users/xxx/.jenkins/workspace/job名称/。(.开头的一般是隐藏文件,一般mac用户都会让系统显示隐藏文件)。
5.签名
签名的得写全名称,下面的描述文件那个不用填,否则报错,前提是你的程序的target需要设置好工程能识别的签名证书,注意需要正常识别,不存在的描述文件配置可不行。
6.xcode高级配置
由于我们的工程是一个workspace而不是单一的project,所以直接简单配置target是不管用的。
这里需要注意,你使用的当前运行jenkins的mac电脑,需要执行下程序,进而产生当前电脑用户的scheme,然后上传到svn,这时再下载的时候,才会存在该用户的scheme,否则svn代码原来不带该用户的scheme,就不能build成功,报错说当前的workspace不存在xxx scheme。
xcode scheme file填写程序的scheme。
SDK填写你当前xcode命令行连接的xcode app的支持的sdk,假如你没注意过命令行,
haiwangdeMac-mini:VANCL hai$ xcodebuild -version
Xcode 6.0
Build version 6A313
这个说明我的使用的是xcode6.0.
haiwangdeMac-mini:VANCL hai$ xcodebuild -showsdks
OS X SDKs:
OS X 10.9
-sdk macosx10.9
iOS SDKs:
iOS 8.0
-sdk iphoneos8.0
iOS Simulator SDKs:
Simulator - iOS 5.0
-sdk iphonesimulator5.0
Simulator - iOS 6.0
-sdk iphonesimulator6.0
Simulator - iOS 7.1
-sdk iphonesimulator7.1
Simulator - iOS 8.0
-sdk iphonesimulator8.0
这个说明当前xcode支持的sdks。如果你命令行连接的xcode5,又SDK填入的iphoneos8.0,则会报错没有此sdk.
haiwangdeMac-mini:VANCL hai$ xcode-select -p
/Applications/Xcode 6.0.app/Contents/Developer
上个命令说明你的命令行连接的哪里。
Usage: xcode-select [options]
Print or change the path to the active developer directory. This directory
controls which tools are used for the Xcode command line tools (for example,
xcodebuild) as well as the BSD development commands (such as cc and make).
Options:
-h, --help print this help message and exit
-p, --print-path print the path of the active developer directory
-s <path>, --switch <path> set the path for the active developer directory
-v, --version print the xcode-select version
-r, --reset reset to the default command line tools path
使用xcode-select -s <path> 可以重新设置命令行连接的地址,设置你连接到那个xcode版本上。
xcode workspace file 指定你的workspace在哪里,多个svn地址的时候需要为每个xcode构建配置不同的workspace。也许是2.5.0/xxx,也许是3.0.0/xxx.
build output directory 输出目录,你的任务构建的成果就出现在这个目录结构中,你的程序的app啊还有打成的ipa包啊plist文件等等。
在xcode构建中,你可以创建多个xcode构建过程,进而打不同的程序包。
6.构建后操作--邮件
一般都会设置邮件接收build失败的报告。这个需要说下系统管理--这里设置很多东西。
恩,同时也说说其他的。
有个执行者数量,设置同时执行多少个jobs。
Default view 默认视图。
Jenkins Location
需要配置jenkins url,这台机器的jenkins服务地址,http://10.8.53.131:8080/。
系统管理员邮件地址,填 vancl_ios_jenkins <[email protected]>
Subversion 一般选择1.7.
邮件通知,需要设置SMTP服务器。
注意下面有个选框,通过发送测试邮件测试配置,你可以设置一个邮件接收方测试邮件是否能够发送成功。
7.ftp上传服务
上一篇有个软件 lion weak吧,开放电脑的ftp功能。
在系统设置中设置ftp参数
我是传到本地。
然后是发布成果到ftp服务器。
我是直接发送到我的tomcat目录的发布系统的下面。
这里需要注意,一般选择flatten files,这样的话,你上传的Source路径下的目录结构就不会一起上传到Destination中,只会上传相应的文件;如果没有勾选,则会在Destination的目录结构下
又创建了Source的目录结构,很不爽。
这里再说下支持手机内直接下载安装的东西。
打ipa包的时候可以直接生成plist文件,它的plist的url填写成你的服务的地址,这个地址加上文件名就组成了可下载ipa包的http服务地址url。这个plist url中jenkins会自动后面加上ipa文件名。
下图是任务执行成功,并ftp上传到tomcat目录下的ipa以及对应的plist,打开plist可以看到它的软件值是指向对应的ipa包的。
8.这些包和文件都上传成功后,则设置下tomcat。
新建一个简单的web服务即可,首页的index.html改改。
增加下载链接
<a href="./static/vancl_iphone_app/3.1.0/VANCL-Online-3.1.0.ipa">VANCL-Online-3.1.0.ipa</a>
和直接安装的链接
<a href="itms-services://?action=download-manifest&url=http://10.8.53.131:8088/static/vancl_iphone_app/3.1.0/VANCL-Online-3.1.0.plist">install</a>
由于ios7.0以后需要服务器的https支持,这个直接下载安装没多弄呢。
可用keytool创建证书,然后放到tomcat 下,修改server.xml,但是我弄好后还是不能下载。
使用http,7.0的安装会提示证书无效;使用https则提示无法连接到ip地址,貌似好像得需要权威的证书,以后看看放到公司的服务器上去。
index.html修改好后,就可启动tomcat访问这个服务了,暂时就这些了。
上一篇:http://blog.csdn.net/monkey_cool/article/details/38010471