1.持续化集成的好处
1. 缩减开发周期,快速迭代版本
每个版本开始都会估算好开发周期,但是总会因为各种事情而延期。这其中包括了一些客观因素。由于产品线增多,迭代速度越来越快,给测试带来的压力也越来越大。如果测试都在开发完全开发完成之后再来测试,那就会影响很长一段时间。这时候由于集成晚就会严重拖慢项目节奏。
2.自动化流水线操作带来的高效
其实打包对于开发人员来说是一件很耗时,而且没有很大技术含量的工作。如果开发人员一多,相互改的代码冲突的几率就越大,加上没有产线管理机制,代码仓库的代码质量很难保证。团队里面会花一些时间来解决冲突,解决完了冲突还需要自己手动打包。这个时候如果证书又不对,又要耽误好长时间。这些时间其实可以用持续集成来节约起来的。一天两天看着不多,但是按照年的单位来计算,可以节约很多时间!
3.随时可部署
有了持续集成以后,我们可以以天为单位来打包,这种高频率的集成带来的最大的优点就是可以随时部署上线。这样就不会导致快要上线,到处是漏洞,到处是bug,手忙脚乱弄完以后还不能部署,严重影响上线时间。
4.极大程度避免低级错误
我们可以犯错误,但是犯低级错误就很不应该。这里指的低级错误包括以下几点:编译错误,安装问题,接口问题,性能问题。
以天为单位的持续集成,可以很快发现编译问题,自动打包直接无法通过。打完包以后,测试扫码无法安装,这种问题也会立即被暴露出来。接口问题和性能问题就有自动化测试脚本来发现。这些低级问题由持续集成来暴露展现出来,提醒我们避免低级错误。
Jenkins持续化集成工具
Jenkins的工作流程如图所示
2.Jenkins下载和安装
Jenkins是基于Java开发的一种持续集成工具。所以呢,要使用Jenkins必须使用先安装JDK。
JDK的下载地址
Jenkins下载地址
下载好JDK和Jenkins的安装包后直接双击安装就好,具体的就不截图了,so easy。
好啦,安装好Jenkins后打开浏览器打开(http://localhost:8080)
就可以看到Jenkins的初始页面了(如果不能打开应该是JDK环境没有安装好,重新下载最新的JDK安装一下,也有可能是8080端口被占用了)
这里需要一个初始密码,页面中的红色字体也标出了该密码文件的路径,不过一开始该文件是没有读写权限的,需要先到找到/Users/Shared/Jenkins/Home/ 这个目录下,改了/secrets/目录的读写权限,右键显示简介,然后点击锁就可以改权限了。同样的把/secrets/目录里面的initialAdminPassword文件的权限改了,就可以打开initialAdminPassword文件获取密码了。
把获取到的密码粘贴到刚刚的页面,然后选择继续。
完成之后会进来一个选择插件安装的页面(这里个人小建议就是选选择第二个自定义的插件,因为如果选择第一个安装推荐的插件的话会太多了,等待的时间过长,而且可能会卡死了)
选择了第一个安装默认的插件的话如图(我第一次安装时就选择了安装推荐插件,但是等了很久,后来直接卡死了,于是我只能卸掉Jenkins重新跑一遍前面的流程,卸载Jenkins的方法)
还是选择第二个吧,到时候初始化完毕了再到插件选择安装页面安装我们需要的插件即可~~~到了创建用户的时候了
路安装过来,输入用户名,密码,邮件这些,就算安装完成了。
3.jenkins插件安装
接下来是插件安装了
这里列一下我用到的插件
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的插件
下载过程中会出现这个页面,等待下载完成更新页面即可
4.Jenkins证书配置
OK,插件安装完毕了,下一步的准备工作是证书的导入,同样是系统管理--->Keychains and Provisioning Profiles Management(注意这个是安装了Keychains and Provisioning Profiles Management插件后才会有的)
然后进来证书设置页面,前往~/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到这里我们的证书就配置完毕啦可以愉快的去构建项目啦~~~~
5.Jenkins构建项目
回到Jenkins的首页--->新建-->填写项目名称,这个自己喜欢!,选择构建项目类型,选择一个自由风格的项目,next Ok
1.General默认都不选就好,具体的作用可以点击?都有详细的说明
2.源码管理选择SVN,copy源码的SVN地址,然后addSVN用户
3.构建触发器选择Poll SCM 轮询的方法,输入H/5 * * * * 表示五分钟check一次SVN的路径,如果源码有变化就构建。其他的可点击?看具体的解释
4.构建环境选择Keychains就好
5.构建,增加构建步骤里面选择Xcode
这里的输出路径 ${WORKSPACE}/build/ WORKSPACE指的是当前的工作路径,也可以自定义输出路径,其他的可以不用设置
接着设置keychain,path填写/Users/Shared/Jenkins/Library/Keychains/login.keychain,这个是固定的,就是我们刚刚他证书复制进来的路径,然后填写密码,密码是电脑的开机密码注意!!!!
如图,这里的schema填写的是xcode中工程的名称
如果你的工程师通过cocoapods管理的话那么就填写Xcode Workspace File这个,不用填Xcode Project File。但是第一次你的代码还没有从SVN上面拉下来呢,所以并不知道这个工程路径所在啊。所以第一次构建的时候这里就留空先,等你的代码从SVN上面clone下来后,找到/Users/Shared/Jenkins/Home/workspace/里面找到该工程的路径在填进去就好,嗯,我就是这么干的,如果有好方法记得分享给我一下呀~注意:该路径后面不要带.xcworkspace
6.构成成功后的操作,上传到fir平台,这里选择upload to fir.im,记得是安装了fir-plugin才有这个。
fir.im Token是fir平台的给你账号唯一token,如果没有去生成一下
IPA/APK Files (optional)二进制包的路径,可选的,如果上面ipa的输出路径是${WORKSPACE}/build/的话这里可以不填,我的就是。如果是自定义的输出路径的话可能需要,我暂时还没有测试这里
最后填写保存就可以去构建啦啦啦啦啦~~~
6.构建
回来主页面后选择立即构建,就可以看到构建的进度了,配置就是刚刚的那些构建的配置,可以进去修改
下面的build history就是我们的构建历史了,如果是红色的就是构建失败,如果是蓝色的就是构建成功,点击小球可以进去看构建的日志,查看失败的原因。好啦,今天就到这里了,shell脚本构建还不会,有是时间研究会了再补上,然后后面会补上本人遇到的坑,都是泪~~~~~~~