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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容