iOS自动化实践——jenkins持续集成打包(一)
写在尝试之前
其实之前尝试过jenkins实现android打包,但是对iOS打包有各种环境问题依赖,但是现在需要实现iOS自动化打包,为了方便内部分发测试,依然jenkins实现。
1、实施步骤——安装Jenkins
安装jenkins在mac环境很简单,直接brew install jenkins
安装好以后,在终端输入:jenkins
,就启动了jenkins
在浏览器输入http://127.0.0.1:8080
,可以看到jenkins的主界面
2、实施步骤——安装插件
在jenkins==>系统管理==>管理插件
内安装插件:
- Git Plugin
- Git changelog Plugin
- xcode integration
3、实施步骤——创建Job
笔者创建了一个
下面进入重中之重
由于公司使用的是Git管理源码,因而在源码管理处,选择Git
,如图所示
需要填的有Repositories,Credentials,Branches to build,Additional Behaviours
,
注意Additonal Behaviours
选择Advanced clone behaviours
,
然后勾选Shallow clone
(不下载历史版本)
Credentials填写的时候,有的童鞋可能会遇到私钥,公钥的问题,如果对git不是特别理解的话,会不知道怎么填。
这里有个简单的办法,你先需要确保,在终端命令行,你可以执行,git clone
命令,可以clone源码到本地,如何能做到这个条件?
按照这个链接操作Mac下git通过SSH生成钥匙。
已经能做到的,直接cd到本地.ssh,可以看到id_rsa,id_rsa.pub,known_hosts
,打开id_rsa
复制。其他步骤则如图所示:
填好之后,保存,然后Credentials选择刚才命名的记录。
这个时候代表已经填好了Repositories,Branches to build,Additional Behaviours
,然后立即保存,然后点击立即构建,确认可以构建成功,下载源码到/jenkins/workplace
4、实施步骤——构建打包
一直尝试用jenkins自带的xcode打包,发现总是出错,报证书的问题,报profile找不到的问题,实在没办法了,试图通过命令行实现。
用 Xcode 打包的步骤是
(1).Product - Clean ,对应脚本中 xcodebuild clean 命令
(2).Product - Archive,对应 xcodebuild archive 命令
(3). Export ,对应xcodebuild -exportArchive
- Scheme 参数对应 Xcode 中的 Product - Scheme ,在项目目录执行xcodebuild -list命令也可以查看
- 勾选了 Shared 的 Scheme 会保存在 .xcodeproj/ 目录下的文件里,才会被版本控制系统记录,如果一个 Shared Scheme 也没有,打包命令不会自己结束,也不会报错。
- CODE_SIGN_IDENTITY 参数填证书名,可以在 OS X 系统的钥匙串应用里查看
钥匙串里,证书可能在登录级也可能在系统级,如果在“登录”中,其他 OS X 用户(比如java -jar jenkins.war启动的 Jenkins)执行命令时需要输入密码,把证书移到“系统”里就不用输密码了,也可以用 security unlock-keychai 命令解锁,也可以修改证书的信任设置 - PROVISIONING_PROFILE 参数,在 Xcode - Preference - Accounts - View Details 找到对应的 Provisioning Profiles ,右键 Show in Finder,会看到一个 ~/Library/MobileDevice/Provisioning Profiles/97824172-beb3-4674-a266-13f57242277f.mobileprovision 文件,参数填文件名(不包含扩展名)
- exportOptions.plist 文件按下面的格式写,用xcodebuild -help命令看键值对的说明123456789<?xml version="1.0" encoding="UTF-8"?><plist version="1.0"><dict><key>teamID</key><string>xxxx</string><key>method</key><string>xxxx</string></dict></plist>
5、打包完成,安装
打包完成之后,需要安装到手机,目前我所知有三种方式:
(1).使用jenkins插件
https://wiki.jenkins-ci.org/display/JENKINS/iOS+Device+Connector+Plugin
(2).使用ideviceinstaller
安装方法也很简单 brew install imobiledevice 之后安装ipa的话就直接用 ideviceinstall –udid ${UDID} –install your.ipa
(3).使用ios-deploy
安装方法 npm i -g ios-deploy 然后 ios-deploy -b your.ipa
至此完成,jenkins持续打包和安装,下面就需要完成自动化回归测试了。。。。