Jenkins-iOS持续部署

持续部署使用工具: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

可以开始构建的旅程了,如果出现错误可以通过看日志,找对应错误进行解决,自行搜索吧...

推荐阅读更多精彩内容