持续部署使用工具:Jenkins + Xcode +Fir.im
达到的目标:自动检测版本库代码的变化,自动拉取对应分支代码,通过Jenkins 中的xocde插件自动编译打包,最后通过第三方分发应用(fir.im),推送对应的测试人员。
需要注意:构建iOS的.ipa包,必须是mac电脑才可以滴哟且已安装了Xcode开发工具。
部署流程:
1、General
登录Jenkins;新建一个项目,项目名称Jingle-iOS(自由风格)
进入到配置界面
对项目信息进行完善补充,如添加一些描述信息;测试拉取是test分支还是Dev分支等
勾选丢弃旧的构建,设置对应的天数和最大的构建数,保证空间不生成太多冗余文件占用磁盘空间
2、源码管理
从git拉取项目,输入对应的项目的地址
图中的ssh 账号都是已添加好了,这里就不做太多说明了
3、构建触发器
根据实际项目情况,设置自动构建频率;不清楚直接点击每个选择框的?,有对应的说明。
一般勾选 Poll SCM 日程表: */30 * * * * 对应的构建频率:每30分会自动构建;
4、构建环境
勾选Keychains and Code Signing Identities和Mobile Provisioning Profiles;选择之前已上传好的开发证书
注意:只要在安装了Keychains and Provisioning Profiles Management插件,才会显示上面2个选项
上传 login.keychain 和 开发者证书
login.keychain 默认路径 ~/Library/Keychains目录下
开发者证书默认路径 ~/Library/MobileDevice/Provisioning \Profiles 目录下
Keychains and Provisioning Profiles Management具体配置界面
5、构建步骤
项目使用cocoapods进行依赖管理,通过以下步骤进行后续操作:
使用sudo gem install -n /usr/local/bin cocoapods 下载依赖管理工具
sudo chmod +rx /usr/local/bin 设置权限
上述操作完成后,切换到项目根目录下,使用pod install 和 pod update 命令下载安装第三方依赖库;
完成后,当前目录下生成一个Pods文件(下载过程有些长,需要翻墙或者更换国内的源,网上自行搜索);
接上一步操作,使用Xcode打开.xcworkspace的文件,加载完成,配置对应的证书;
防止出错,可以先通过Xcode进行编译一次;确保没问题,再继续在Jenkins中进行后续配置。
在构建界面,点击增加构建步骤--选择Execute shell ;输入以下命令
插入编码,以及切换到项目的根目录;保证在执行脚本的时候不发生错误;
点击增加构建步骤,选择已安装好的Xcode 插件
Target: JIngle (也可以不填写)
Clean before build 勾选 每次构建都会清除之前生成build文件;避免引起其他异常错误
Configuration 打包是Debug还是Release,默认是Release,但是测试一般使用是Debug;
不勾选Pack application and build .ipa?;因为插件生成ipa文件使用的命令已被Xcode废弃,怕出现问题;因此在最后我是写了通过脚本命令生成对应的IPA文件;所以就不做勾选
Code signing & OS X keychain options
之前已启用了对应签名,所以这里可以完全不用进行设置了;这里只是介绍一下;
Advanced Xcode build options
Xcode Schema File XXX 可选项
SDK iphoneos10.2 可选(可通过xcodebuild -showsdks查看)
Custom xcodebuild arguments :PROVISIONING_PROFILE=${PROVISIONING_PROFILE}
Xcode Workspace File 项目编译所在文件目录 ${WORKSPACE}/XXX
Build output directory 编译结果输出的目录 ${WORKSPACE}/build/ ,也可以设置其他位置,随你自己吧
由于xcode打包过程中,没有直接使用插件实现签名上面也说明了,因此在build的目录生成是.app文件;
所以还需要将.app 转换成.ipa文件,这样才能成功才能安装到手机 所以就通过脚本方式编译;
mkdir ./Payload #新建一个Payload
cp -r ${WORKSPACE}/build/xxx.app ./Payload #将.app文件拷贝到Payload文件下
zip -q -r ./XXX.ipa ./Payload #将Payload 文件压缩成XXX.ipa文件
rm -rf ./Payload #删除之前新建的Payload文件
6、构建后操作
将ipa上传到fir分发服务器
先访问fir.im官网;下载Jenkins的插件http://blog.fir.im/jenkins/,之后增加构建后操作选择Upload tofir.im
输入对应的fir.imToken可以在fir.im官网查看;其他选项可以都不填;直接保存即可。fir插件自动查找.ipa文件,省事。
配置完成,保存设置。点击立即构建,就会自动进行编译啦,也可以及时通过Console Output 看输出日志;
本地部署和节点部署
1、本地部署:
按照上述的步骤进行部署即可
2、节点部署(解决Linux上iOS打包)
节点部署需求说明:iOS打包无法在Linux上进行,因为Jenkins的Xcode插件需要调用Xcode,Xcode只能在OSX系统下安装。
节点部署步骤:
1.登录Jenkins,添加MacOSX节点(系统管理☞管理节点☞新建节点)
2.输入节点名称,勾选PermanentAgent
3.开启要绑定OSX系统电脑的远程登录(系统偏好设置☞共享☞勾选☞远程登录在MAC电脑进行此操作)
4.配置节点
若没有Launch slave agents on Unix machines via SSH选项,需要安装SSH Slaves plugin插件
若没有Keychains and Provisioning Profiles Management选项,需要安装kpp-management-plugin插件
5.节点创建完成后会自动连接
因为Jenkins服务器是在公网;而Mac电脑是内网机器,所以还需要配置内网穿透,使用到的NatApp工具;将内网机器映射到公网环境下,
这样在Linux服务器才可以连接到MAC,就可以在Linux服务器启动Jenkins打包iOS)
6.选择MacOSX节点
General☞勾选☞Restrict where this project can be run☞输入☞MACMINI
可以开始构建的旅程了,如果出现错误可以通过看日志,找对应错误进行解决,自行搜索吧...