Jenkins+Cocoapods+Coding+Git+Fir iOS项目持续集成

原文地址发布在我自己的独立博客上:http://www.jvaeyhcd.cc/2016/05/21/%E4%BD%BF%E7%94%A8Jenkins%E6%9E%84%E5%BB%BAiOS%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E8%87%AA%E5%8A%A8%E6%89%93%E5%8C%85/,顺便说一下,简书居然不支持markdown,真的应该给个差评。

持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

为什么使用持续集成

1、减少重复繁琐的打包过程

2、任何时间、任何地点测试都可以获取到新包

3、增强项目的可见性

做持续集成对我们开发者来说是一件一劳永益的事情,对于发包这个问题,相信是每个程序员GG心中挥之不去的痛,而测试MM们也在每次马上就发出来的承诺中得出一个结论就是“你是个大骗子”。

所以每次被测试MM追着要包,产品经理说给我装一个新包瞧瞧呗,后台GG说给我装一个老版本调试一下啊。。。这个时候我们的内心是奔溃的,然后我们不得不暂停手下的工作,切换到某个版本,Archive。。。其实对于打包发包这种事情根本就不是开发需要做的,因为这是一个简单没有技术含量且浪费时间的工作。时间就是金钱,所以为了不再浪费我们开发宝贵的时间,自动化构建这件事情必须得提上日程了。

常见的持续集成工具

* Jenkins CI

* Travis CI

* Hudson CI

* Circle CI

持续集成的工具有很多,不过最好用的还是Jenkins,Travis能够对Github上的开源项目做很好的集成,考虑到Jenkins的稳定性,我们还是选择Jenkins来开始我的iOS持续集成。

工程结构

本事例项目工程代码存放在coding,使用Cocoapods管理第三方库,存在在coding上的项目目录结构如下: 

目录结构图

由于cocoapods文件过多,所以没有必要上传到git仓库中,只用将Podfile文件传上去即可。

Jenkins的安装

由于Jenkins是Java开发的,所以首先我们需要先安装好Java环境,然后去Jenkins的[官网](http://jenkins-ci.org/)下载最新的war包。下载完成后,打开终端,进入到war包所在目录,执行以下命令:

java -jar jenkins.war --httpPort=8888

httpPort指的就是Jenkins所使用的http端口,这里指定8888,可根据具体情况来修改。待Jenkins启动后,在浏览器页面输入以下地址:

http://localhost:8888

这样就可以打开Jenkins页面了。

`--httpPort=8888`可以不输入,不输入默认端口号为8080

打开链接后,先要设置一些安装信息,这里就不再啰嗦,因为十分简单,接下来我们来看安装成功后的相关配置。

Jenkins的配置

到Jenkins页面,Jenkins-系统管理-插件管理-可选插件中,安装一下插件:

* GIT plugin

* Git client plugin

* Xcode integration

* CocoaPods Jenkins Integration

Git私有仓库配置

按照如下方式添加SSH,因为项目代码是存放在coding上的所以,这个关于生成SSH可以以Coding为例:https://coding.net/help/doc/git/ssh-key.html

秘钥配置

创建Job

这里的步骤我准备全部一图片的形式展示出来。

点击“Jenkins”-“新建”:

创建Job

源码管理

选择刚刚创建的项目,点击“配置”:

设置源码地址

这里最好使用SSH,这个工程是私有项目,如果出现错误肯定是由你自己配置错误造成的。

构建步骤设置

选择构建步骤,记得添加Xcode插件,选择添加Execute Shell和Xcode,有先后顺序。

添加构建步骤

设置Execute Shell

Execute Shell

Xcode General build settings

Xcode General build settings
Code signing & OS X keychain options

Keychain path填写`${HOME}/Library/Keychains/login.keychain`

Keychain password对应的密码可以在钥匙串中查看:

OS X keychain password

Advanced Xcode build options

Advanced Xcode build options

fir.im Jenkins 插件安装

上面的构建配置好了后,如果顺利的话就已经能够编译出ipa文件了,但是编译出来的ipa只能放在本地,不能给大家安装,所以编译完成后我们还需要将ipa文件上传到fir.im。

fir插件的安装方法详情请移步:《fir.im Jenkins 插件使用方法》

构建后上传到fir.im

安装好fir插件后在“构建后操作”中点击“添加构建后操作步骤”,可以看到:

添加构建后上传fir步骤

点击“upload to fir.im”,然后会出现如下界面:

设置fir.im的Token

Fir.im的Token获取地址:http://fir.im/apps/apitoken

手动构建

选中你要构建的项目,然后点击“立即构建”

选择正在构建的Build,然后点击“Console Output”可以查看build过程中打印的一些信息,如果遇到什么报错信息都可以在这里面查看。

控制台输出

自动构建设置

构建触发器有一下几种触发方式:

* 触发远程构建 (例如,使用脚本)

* Build after other projects are built

* Build periodically

* Poll SCM

这里我只用到了Build periodically

Build periodically触发自动构建

总结

为了搭建这个Jenkins我看了很多博客,不过大多比较难懂,一直都没有成功,经过各种尝试后最终搭建成功,我在此将整个过程记录下来,以来是对自己知识的一个积累,二来如果能够给将要搭建Jenkins的iOS持续集成的朋友们一点帮助也是极好的。

参考文档:

[一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP]

[使用 Xcodebuild + Jenkins + Apache 做 iOS 持续集成]

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

推荐阅读更多精彩内容