学会使用 Jenkins 搭建 iOS 持续集成环境

以往每次编译打包 iOS 项目 都需要花费 2 分多钟,这时候电脑就会很卡(电脑:配置不高怪我咯),让我们怎么愉快地进行其他的工作呢?打包完了还得提交 ipa 文件发给测试,或者手动上传蒲公英 / fir 等。最近,由于公司产品增多,对项目的快速开发、测试、分发、上线提出了更高的要求……就不能让这一切简单一点?

答案是可以。使用 Jenkins 可以轻松地帮我们完成很多工作,让常规任务实现自动化。

持续集成的概念

持续集成,即 Continuous integration ,简称 CI
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

持续集成的特点

它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
需要有专门的集成服务器来执行集成构建;
需要有代码托管工具支持;
持续集成的作用

保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;

Jenkins 是什么

简单的说,Jenkins 是一种基于 Java 开发的持续集成工具,前身称作Hudson,它是一个开源软件项目,提供了用于监控持续重复工作的软件平台。

Jenkins 搭建步骤

下载安装

打开Jenkins官网,点击下载

我用的是 2.19.1 系统选择 Mac OS X , 得到 pkg 文件安装

安装过程不难,照着提示操作就行

安装过程中,要用到一个密码解锁 Jenkins,可在 /var/log/jenkins/jenkins.log 文件中找到

Jenkins 安装完毕后,会在系统中创建一个 jenkins 用户,后续要导入证书文件到 jenkins

导出公司开发和发布证书,得到 2 个 p12 文件
打开终端为用户 jenkins 设置一个密码,以便我们接下来的登录操作

sudo dscl . passwd /Users/jenkins YourPassword

注销当前用户,登录 jenkins ,双击前面得到的 p12 文件导入证书
安装完毕,进入 http://localhost:8080 ,来到 Jenkins 使用界面,创建一个新项目

选择“构建一个自由风格的软件项目”
填写 Git 项目的 URL 地址,当然,如果使用 SVN 就选择 subversion
增加构建步骤:选择Xcode
Target 填写 iOS 工程中的 Target 名称
打包需要使用到钥匙串中的开发证书,选择 Unlock Keychain, Keychain path 默认是 /Users/Shared/Jenkins/Library/Keychains/login.keychain ,密码为上面我们创建的用户 jenkins 的登录密码
配置完毕保存,点击开始构建。红色小圆点表示构建失败,蓝色小圆点表示构建成功

自己踩的一些坑,几乎都是关于 Keychain 和 Provisioning Profiles

1、拷贝文件失败
java.io.IOException: Failed to copy /Users/Shared/Jenkins/Home/kpp_upload/test.mobileprovision to /Users/Shared/Jenkins/Provisioning/d135cf91-b24e-7896-xv6i-6bd234945a99.mobileprovision
at hudson.FilePath.copyTo(FilePath.java:2018)

解决方法:检查相关文件夹的读写权限

2、找不到描述文件
Code Sign error: No provisioning profiles found: No non–expired provisioning profiles were found.

解决方法:将相关描述文件拷贝到 /Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile 文件夹中

3、描述文件不匹配
Code Sign error: No matching provisioning profiles found: No provisioning profiles matching an applicable signing identity were found.
Code Sign error: No matching provisioning profiles found: No provisioning profiles with a valid signing identity (i.e. certificate and private key pair) matching the bundle identifier “com.abc.test” were found.

解决方法:检查项目和描述文件是否对应

以上就是我最近学习使用 Jenkins 的小结,写的比较简单,只介绍了几个最基本的步骤,后续有时间再来完善下。
另外,Jenkins 还有很多强大的功能和特性值得我们去探索和学习。

参考

持续集成和Jenkins介绍
使用 Jenkins 实现软件开发的持续集成
Jenkins Xcode 证书设置错误 Code Sign error: No matching codesigning identity found: No codesigning identities
stackoverflow -- Xcode 5 continuous integration CodeSign fail

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

推荐阅读更多精彩内容