Jenkins+xcode+SVN+fir自动打包

1.持续化集成的好处

1. 缩减开发周期,快速迭代版本

每个版本开始都会估算好开发周期,但是总会因为各种事情而延期。这其中包括了一些客观因素。由于产品线增多,迭代速度越来越快,给测试带来的压力也越来越大。如果测试都在开发完全开发完成之后再来测试,那就会影响很长一段时间。这时候由于集成晚就会严重拖慢项目节奏。

2.自动化流水线操作带来的高效

其实打包对于开发人员来说是一件很耗时,而且没有很大技术含量的工作。如果开发人员一多,相互改的代码冲突的几率就越大,加上没有产线管理机制,代码仓库的代码质量很难保证。团队里面会花一些时间来解决冲突,解决完了冲突还需要自己手动打包。这个时候如果证书又不对,又要耽误好长时间。这些时间其实可以用持续集成来节约起来的。一天两天看着不多,但是按照年的单位来计算,可以节约很多时间!

3.随时可部署

有了持续集成以后,我们可以以天为单位来打包,这种高频率的集成带来的最大的优点就是可以随时部署上线。这样就不会导致快要上线,到处是漏洞,到处是bug,手忙脚乱弄完以后还不能部署,严重影响上线时间。

4.极大程度避免低级错误

我们可以犯错误,但是犯低级错误就很不应该。这里指的低级错误包括以下几点:编译错误,安装问题,接口问题,性能问题。
以天为单位的持续集成,可以很快发现编译问题,自动打包直接无法通过。打完包以后,测试扫码无法安装,这种问题也会立即被暴露出来。接口问题和性能问题就有自动化测试脚本来发现。这些低级问题由持续集成来暴露展现出来,提醒我们避免低级错误。

Jenkins持续化集成工具

Jenkins的工作流程如图所示


WechatIMG3.jpeg

2.Jenkins下载和安装

Jenkins是基于Java开发的一种持续集成工具。所以呢,要使用Jenkins必须使用先安装JDK。
JDK的下载地址

WechatIMG4.jpeg

Jenkins下载地址

WechatIMG5.jpeg

下载好JDK和Jenkins的安装包后直接双击安装就好,具体的就不截图了,so easy。

WechatIMG6.jpeg

好啦,安装好Jenkins后打开浏览器打开(http://localhost:8080)
就可以看到Jenkins的初始页面了(如果不能打开应该是JDK环境没有安装好,重新下载最新的JDK安装一下,也有可能是8080端口被占用了)


这里需要一个初始密码,页面中的红色字体也标出了该密码文件的路径,不过一开始该文件是没有读写权限的,需要先到找到/Users/Shared/Jenkins/Home/ 这个目录下,改了/secrets/目录的读写权限,右键显示简介,然后点击锁就可以改权限了。同样的把/secrets/目录里面的initialAdminPassword文件的权限改了,就可以打开initialAdminPassword文件获取密码了。
WechatIMG8.jpeg

把获取到的密码粘贴到刚刚的页面,然后选择继续。

WechatIMG9.jpeg

完成之后会进来一个选择插件安装的页面(这里个人小建议就是选选择第二个自定义的插件,因为如果选择第一个安装推荐的插件的话会太多了,等待的时间过长,而且可能会卡死了)

WechatIMG10.jpeg

选择了第一个安装默认的插件的话如图(我第一次安装时就选择了安装推荐插件,但是等了很久,后来直接卡死了,于是我只能卸掉Jenkins重新跑一遍前面的流程,卸载Jenkins的方法

WechatIMG11.jpeg

还是选择第二个吧,到时候初始化完毕了再到插件选择安装页面安装我们需要的插件即可~~~到了创建用户的时候了


WechatIMG12.jpeg

路安装过来,输入用户名,密码,邮件这些,就算安装完成了。

WechatIMG13.jpeg

3.jenkins插件安装

接下来是插件安装了

WechatIMG14.jpeg

WechatIMG16.jpeg

这里列一下我用到的插件
1.Xcode integration xcode的插件
2.Keychains and Provisioning Profiles Management 安装证书的插件
3.Email Extension Plugin 发送邮件的插件
4.fir-plugin 上传到fir的插件下载地址(http://blog.fir.im/jenkins/
5.Subversion Plug-in SVN的插件
下载过程中会出现这个页面,等待下载完成更新页面即可
WechatIMG17.jpeg

4.Jenkins证书配置

OK,插件安装完毕了,下一步的准备工作是证书的导入,同样是系统管理--->Keychains and Provisioning Profiles Management(注意这个是安装了Keychains and Provisioning Profiles Management插件后才会有的)

WechatIMG18.jpeg

然后进来证书设置页面,前往~/Library/keyChains/ 找到login.keychain文件,拖进来证书安装页面,点击upload上传,会出现设置密码,填电脑密码和证书的名字。(这里有可能没有login.keychain,而是login.keychain-db文件,一样的替换掉就好)接着前往~/Library/MobileDevice/文件夹,将你的开发描述文件拖进来upload

将~/Library/keyChains/ 下的login.keychain 及login.keychain-db这两个文件拷贝到/Users/Shared/Jenkins/Library/Keychains文件夹下面(没有Keychains文件夹就创建一个)

将~/Library/MobileDevice/的整个文件夹Provisioning Profiles拷贝到/Users/Shared/Jenkins/Library/MobileDevice下面(没有MobileDevice文件夹就创建一个)

一定要把Provisioning Profiles整个文件夹放到MobileDevice下面

一定要把Provisioning Profiles整个文件夹放到MobileDevice下面

一定要把Provisioning Profiles整个文件夹放到MobileDevice下面

最后到秘钥里面,找到开发证书-->显示简介-->访问控制修改为允许所有程序访问此项目(Jenkins才可以访问到我们的开发文件)
nice到这里我们的证书就配置完毕啦可以愉快的去构建项目啦~~~~


WechatIMG19.jpeg
WechatIMG20.jpeg
WechatIMG21.jpeg
WechatIMG22.jpeg
WechatIMG23.jpeg

5.Jenkins构建项目

回到Jenkins的首页--->新建-->填写项目名称,这个自己喜欢!,选择构建项目类型,选择一个自由风格的项目,next Ok

WechatIMG24.jpeg

1.General默认都不选就好,具体的作用可以点击?都有详细的说明

WechatIMG25.jpeg

2.源码管理选择SVN,copy源码的SVN地址,然后addSVN用户

WechatIMG26.jpeg
WechatIMG27.jpeg
WechatIMG28.jpeg

3.构建触发器选择Poll SCM 轮询的方法,输入H/5 * * * * 表示五分钟check一次SVN的路径,如果源码有变化就构建。其他的可点击?看具体的解释

WechatIMG29.jpeg

4.构建环境选择Keychains就好

WechatIMG30.jpeg

5.构建,增加构建步骤里面选择Xcode

WechatIMG31.jpeg
WechatIMG32.jpeg
WechatIMG33.jpeg

这里的输出路径 ${WORKSPACE}/build/ WORKSPACE指的是当前的工作路径,也可以自定义输出路径,其他的可以不用设置

WechatIMG34.jpeg

接着设置keychain,path填写/Users/Shared/Jenkins/Library/Keychains/login.keychain,这个是固定的,就是我们刚刚他证书复制进来的路径,然后填写密码,密码是电脑的开机密码注意!!!!

WechatIMG36.jpeg

如图,这里的schema填写的是xcode中工程的名称

WechatIMG37.jpeg

如果你的工程师通过cocoapods管理的话那么就填写Xcode Workspace File这个,不用填Xcode Project File。但是第一次你的代码还没有从SVN上面拉下来呢,所以并不知道这个工程路径所在啊。所以第一次构建的时候这里就留空先,等你的代码从SVN上面clone下来后,找到/Users/Shared/Jenkins/Home/workspace/里面找到该工程的路径在填进去就好,嗯,我就是这么干的,如果有好方法记得分享给我一下呀~注意:该路径后面不要带.xcworkspace

6.构成成功后的操作,上传到fir平台,这里选择upload to fir.im,记得是安装了fir-plugin才有这个。

WechatIMG38.jpeg
WechatIMG39.jpeg

fir.im Token是fir平台的给你账号唯一token,如果没有去生成一下
IPA/APK Files (optional)二进制包的路径,可选的,如果上面ipa的输出路径是${WORKSPACE}/build/的话这里可以不填,我的就是。如果是自定义的输出路径的话可能需要,我暂时还没有测试这里

WechatIMG40.jpeg

最后填写保存就可以去构建啦啦啦啦啦~~~

6.构建

WechatIMG41.jpeg

回来主页面后选择立即构建,就可以看到构建的进度了,配置就是刚刚的那些构建的配置,可以进去修改
下面的build history就是我们的构建历史了,如果是红色的就是构建失败,如果是蓝色的就是构建成功,点击小球可以进去看构建的日志,查看失败的原因。好啦,今天就到这里了,shell脚本构建还不会,有是时间研究会了再补上,然后后面会补上本人遇到的坑,都是泪~~~~~~~

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

推荐阅读更多精彩内容