以往每次编译打包 iOS 项目 都需要花费 2 分多钟,这时候电脑就会很卡(电脑:配置不高怪我咯),让我们怎么愉快地进行其他的工作呢?打包完了还得提交 ipa 文件发给测试,或者手动上传蒲公英 / fir 等。最近,由于公司产品增多,对项目的快速开发、测试、分发、上线提出了更高的要求……就不能让这一切简单一点?
答案是可以。使用 Jenkins 可以轻松地帮我们完成很多工作,让常规任务实现自动化。
持续集成的概念
持续集成,即 Continuous integration
,简称 CI
。
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成的特点
它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
需要有专门的集成服务器来执行集成构建;
需要有代码托管工具支持;
持续集成的作用
保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
Jenkins 是什么
简单的说,Jenkins 是一种基于 Java 开发的持续集成工具,前身称作Hudson,它是一个开源软件项目,提供了用于监控持续重复工作的软件平台。
Jenkins 搭建步骤
下载安装
打开Jenkins官网,点击下载
我用的是 2.19.1 系统选择 Mac OS X , 得到 pkg 文件安装
安装过程不难,照着提示操作就行
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