Jenkins with XCode 持续化集成(原创)

Jenkins with XCode 持续化集成(原创)

本文力求以简明,准确的描述,分享使用Jenkins实现XCode持续化集成过程中的一些问题和解决方案。

Jenkins下载和安装

可从如下地址下载Jenkins安装,进入页面后选择右侧Mac OS
下载后的文件jenkins-1.643.pkg,1.643版本
下载完成后,双击。在安装向导中,直接点击 continue 按钮,直到最终完成
Jenkins安装完成之后,会自动弹出浏览器,提示正在启动,稍等1分钟,即可进入Jenkins的配置界面。

配置前的准备工作

虽然Jenkins会直接启动,但是在配置前还是要明确一些概念,并且做好配置的准备工作
Jenkins安装后会在Mac系统中建立jenkins用户,用户组是daemo。Jenkins的web服务器,即是以该帐号的身份和权限启动。明确这一点很重要,因为后续的很多问题,都是由于权限引起的。
配置事项
1. app的工程源代码(能够在XCode build并且archive通过)
2. app工程源代码的svn url
3. iOS证书(developer证书和distribution证书)已经配置并且安装到Keychain
4. iOS mobile provisioning(developer,adhoc,production)的文件。
5. 执行如下脚本,建立build的文件夹,并设置好权限

mkdir /Uses/[username]/build_root
mkdir /Uses/[username]/build_root/ipa
mkdir /Uses/[username]/build_root/build
mkdir /Uses/[username]/build_root/mobileprovision
sudo chmod -R -v 777 /Uses/[username]/build_root

6.通过finder,修改build_root的权限,添加jenkins帐号,读写权限,并且Apply to enclosed items。
7.通过finder,修改/Users/[username]/Library/Keychains权限,添加jenkins帐号,读写权限,并且Apply to enclosed items
8.通过finder,修改/Users/[username]/Library/权限,添加jenkins帐号,读写权限

以上准备工作,6-8项非常重要,是jenkins顺利build和archive,导出ipa的依赖,原因不做过多说明。这里还要强调一点,如果卸载了jenkins,重新安装后,6-8的准备工作,依旧要重新做,并且删除原有的废弃帐号,重新添加新的jenkins帐号,因为帐号id不是同一个

Jenkins配置

  1. 打开浏览器,输入http://localhost:8080,显示jenkins的主面板
  2. 选择左边Manage Jenkins->Manage Plugins->Available标签页,在右上角输入xcode,在筛选出的插件列表中,选择Xcode integration,安装该插件。
  3. 插件安装完成之后,会自动重启jenkins.
  4. 重新回到主面板,选择左边New Item
  5. 输入Item name,可以输入project名称。不要使用中文。这里暂定为app
  6. 选择Freestyle project,点击OK按钮
  7. 进入project的设置界面,设置界面比较繁琐,但并不是所有项目都要输入
    1. Project name:默认就是Item name
    2. Source Code Management-> Subversion ->Repository URL, 输入准备工作第二项的svn url,输入之后,会提示需要密码认证,点击密码认证,在跳转的页面中,输入svn帐号和密码。这里需要注意的是,svn的路径是xcode project工程文件所在的文件夹路径。jenkins会根据这个路径checkout代码,用于build
    3. Build->Add build step, 选择XCode,会增加一个Xcode的面板,
    4. XCode-> Target,输入target 名称,这里暂定app
    5. Target右侧有个Setting 按钮,点击
    6. Clean before build? 勾选
    7. Generate Archive?勾选
    8. Pack application and build .ipa?勾选
    9. .ipa filename pattern,输入app_${VERSION}_${BUILD_DATE}
    10. Output directory,输入/Uses/[username]/build_root/ipa
    11. Code signing & OS X keychain options
    12. Code Signing Identity: iPhone Distribution: [公司名称] network Technology co., Ltd. (X77VL73UWC)。这里输入的是证书的名称,也就是xcode开发工具的project-target-build setting中对应的名称,可以直接复制过来
    13. Embedded Profile:/Users/[username]/build_root/mobileprovision/zzt-adhoc-20141119.mobileprovision. 这里输入的是mobile provision的文件名称。也是准备工作中,已经准备好的文件,并且复制到对应的文件夹中,稳妥的做法,是复制后,再双击该mobile provision文件。
    14. Unlock Keychain? 勾选
    15. Keychain path:/Users/[username]/Library/Keychains/login.keychain,
    16. 这里输入的是作为jenkins安装所在的Mac os server中的keychain,用于签名证书的私钥保存在这里。如果准备工作6-8中,赋予jenkins对该路径的权限。才能保证jenkins的这个keychain有访问,并为ipa进行签名的权限。
    17. Advanced Xcode build options, 点击 Setting
    18. Custom xcodebuild arguments:-scheme app CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
    19. 需要说明一点,Custom xcodebuild arguments,允许自定义build命令行的参数,建议输入scheme的名称,CODE_SIGN_RESOURCE_RULES_PATH是为了解决Mac os10.10之后的一个兼容性问题,最好都写上
    20. Build output directory:/Uses/[username]/build_root/build,这个配置是指编译时输出的目录,也要在准备工作中进行。
    21. 编译所需的基本设置完成,其他诸如版本号的设置,就根据各自app产品管理的需要,自行设置,不设置,就采用project自身的版本号。
    22. 保存设置
    23. 回到该job item的主面板,选择左边的build now(现在构建),就可以进行build了。
    24. 注意观察build输出的内容,按照上面的准备工作,只要保证证书,签名,描述文件,以及各文件夹创建的权限都做到。构建成功并不是难事。
    25. 构建成功后,在/Uses/[username]/build_root/ipa,文件夹里会有导出的ipa安装文件,以及dysm的符号文件。用于发布,或者QA,或者UAT测试。
    26. 如果遇到错误,可以在本文的回复中提出问题。我会抽出一定时间答疑。

总结

Jenkins依托插件,可以实现更多可定制化的构建管理,但它本身并不非常完善,在对Xcode项目的支持上,还存在很多小的问题。
同时我们也可以使用自己编写脚本的方式,配置到jenkins中用于构建,或者实现多配置环境的构建过程。
使用jenkins要区分操作者是开发者还是QA角色,或者配置管理角色,或者发布角色。不同的角色对于jenkins的使用场景和交付结果是不同的,这些不同体现在,构建完成之后,通过邮件,ftp,或者其他分发平台,如何分发的配置上,这些暂时不是本文要解决的问题,将会另文描述。

目录


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值