1、前言html
在iOS开发过程种,咱们习惯的方式是:建立工程-->修改代码-->Xcode调试-->符合预期要求-->发布,这在单个开发者的状况下当然没有问题,一台mac和一个Xcode就能够完成,可是在大公司和团队开发过程当中,代码管理、打包管理和测试管理就会存在很大的问题,多个开发都会同时修改代码并提交,一般咱们用git来管理这些代码,并由单独的人员打包以及测试代码的质量。jenkins不只能够完成自动化打包的过程,还能够与测试平台进行持续集成。python
iOS jenkins打包的原理是Xcode命令行编译,主要用到两条命令:xcodebuild和xcrun,这两个命令会随Xcode的安装而安装,下面举个使用例子:git
/usr/bin/xcodebuild -scheme Demo4GT -configuration Release clean build -derivedDataPath .
/usr/bin/xcrun -sdk iphoneos PackageApplication -v Demo4GT/Build/Products/Debug-iphoneos/Demo4GT.app -o Demo4GT/Build/Products/Debug-iphoneos/Demo4GT_Demo4GT.ipa
2、准备工做shell
一、jenkins环境。搭建jenkins环境能够参考jenkins平台搭建和配置一节。须要注意的是,虽然涉及iOS开发,可是jenkins平台却没必要搭建在mac机器上,只要在jenkins上添加mac节点就能够了。xcode
二、iOS开发环境。iOS开发环境主要是指Xcode开发环境,Xcode是免费的,只要在苹果应用商店里下载一个就能够了。固然,还有重要的一点儿---开发者证书,如今我的也已经有免费的证书了,没有证书的话,只能打模拟器用的包了。app
三、git项目。强烈建议把代码放在git上,这样便于团队开发。固然,不放git上也能够。iphone
四、jenkins Xcode持续集成插件。经常使用的插件Xcode integration,这个插件可以快速的帮助咱们进行Xcode打包配置,固然,只用纯shell脚本也是能够的。工具
在jenkins上打包以前,咱们最好手工测试一下能够打包成功,首先用Xcode图形界面进行测试,而后用命令行测试,若是都能打包成功就能够挂在jenkins上运行了,毕竟jenkins的原理也是经过执行一系列命令来完成的。
post
3、jenkins配置测试
一、建立一个任务,建立任务的时候最好选自由风格的软件项目,这样配置起来比较方便,若是有须要,也能够选择其余的风格。
二、描述及丢弃旧的构建
二、描述及丢弃旧的构建
描述很简单,就是对这个项目的介绍,防止别人看不懂这个项目是干什么的。丢弃旧的构建是指将构建完的job进行删除,由于大量的构建会占用大量的硬盘空间,若是没有什么用途能够把旧的给删除,固然,若是某个构建比较重要,能够永久保留。丢弃旧的构建能够按照天数或者个数来保留。
参数化构建过程,是指在构造的时候添加相关的参数好比说iOS打包是debug仍是release,在打包以前能够选择参数。这些参数能够代入后面的shell脚本中。参数的类型有bool或者string等类型。
限制构建执行的位置等。Restrict where this projeck can be run能够限制项目执行的位置,例如iOS打包只能在mac节点上执行,咱们能够限制只在mac节点上打包。
源码管理器,能够选择git等工具,并填上本身的分支。
构建触发,何时开始触发构建。触发远程构建能够配置一个触发的URL,经过访问这个URL能够触发构建。Build after other projects are built是在其余项目构建完之后触发这次构建,常见的是打包完之后开始测试构建。Build periodically是周期性构建,固然能够配置每周一到周五上午8点到下午8点每隔两个小时构建一次的状况。Poll SCM表明每隔一段时间检查一个git仓库,若是仓库有变化就开始构建。
构建环境再也不一一解释
增长构建步骤是构建中最重要的部分,这里选择Xcode比较方便,固然,若是选择执行shell脚本,你就要本身写一套shell来完成打包任务了。
而后配置Xcode的参数。Target能够不填,若是有多个的话最好填上。Clean before build最好打上,除非你想加快打包速度,大的项目不clean会出现莫名其妙的错误。Configuration能够配置是Release仍是Debug。Build ipa文件之后能够配置文件的name和生成到的文件夹。在ipa文件命名中,能够采用系统变量来进行名字组合。
在iOS打包过程当中,最麻烦的事情就是Code sign,Code Signing Identity容许你自定义打包的证书,从而替换项目自己的证书,好比说你用开发证书的项目能够被替换为发布证书而打出发布包。Unlock Keychain也是一个比较重要的地方,因为证书是一个很重要的东西,苹果对其作了保护,不能随意用,若是打包时发现证书权限有问题,那么就试试unlock keychain吧。
Xcode打包高级选项,若是有多个schema,最好配置一个schema,SDK能够本身指定,不然会使用默认的。Custom xcodebuild arguments能够填写用户自定义的参数,例如derivedDataPath参数。若是想要编译Xcode Workspace而不是一个project,要指定Workspace File,而Xcode Project Directory和Xcode Project File则是成套出现的。
增长构建后的步骤比较重要,好比说咱们能够在构建成功之后把包放在一个url上,或者执行一系统shell、python脚本,或者增长邮件通知,都是能够的。
下面演示若是生成一个能够下载包的连接,选择Archive the artifacts,按规定artifacts的连接就能够了,好比说下面
在构建后操做中,你也能够执行脚原本触发其余的构建!