jenkins+gitlab+fir.im持续集成环境搭建
什么是持续集成
持续集成(Continuous Integration)持续是指开发阶段,对项目进行持续性自动化编译、测试,以达到控制代码质量的手段。持续集成是一种软件开发实践。
— MBALab
持续集成工具
Jenkins、Travis、Gitlab、buddybuild等都是常见的持续集成工具,虽然他们都可以用于持续集成,但是不乏有各自的优缺点。综合考虑,Jenkins目前是其中使用最广泛,最主流的持续集成工具,这篇文章也是主要围绕Jenkins进行展开来讲。
Jenkins作为传统的工具,前身是Hudson,从04年到现在已经有十几年的发展历史。因为这个 工具比较常用,大家也比较认可,软件开发的各种实践也可以通过大量的插件组合来实现,可定制性也比较好。
Jenkins
1、那么Jenkins 有哪些功能呢?
(1)定时拉取代码并编译
(2)静态代码分析
(3)定时打包发布测试版
(4)自定义额外的操作,如跑单元测试等
(5)出错提醒
基本上都是持续集成实践中的要求和周边的一些实现措施,如提醒功能等,出错后及时提醒开发者修复,Jenkins 中通过配置 SMTP 配置信息(这个一般的邮件服务提供商都有提供),邮件模板等,创建事件触发器,在事件(如编译失败)发生时,及时发送邮件通知开发者,挺方便的。
2、Jenkins流程
平台搭建
Jenkins的安装和启动
Jenkins是基于Java开发的一套持续集成系统,所以在安装的时候需要依赖系统的Java环境。(这里的安装是基于homebrew的)
(1)java 环境准备
(2)Jenkins安装
(3)Jenkins启动和停止
因为homebrew已经集成了服务的暂停和启动功能,所以直接使用homebrew的服务暂停和启动命令
(4)Jenkins访问
经过上面的步骤,我们就可以输入http://localhost:8080进行本地访问了,不出意外,我们就可以进行首次的Jenkins访问了
首次访问会首先进入初始访问界面,这里需要我们输入初始密码,当然在我们安装Jenkins的时候系统为我们创建了一个初始密码,在~/.jenkins/secrets/initialAdminPassword这个文件目录下,我们可以通过vim命令进行查看然后copy到这里
到这里我们就可以进入下一步操作了,点击Continue
这里会有两个选项,第一个的大概意思就是Jenkins建议安装的插件组合,第二个就是根据自己的需要自己定制选择插件组合,这里我们选择第一项。接下来就是等待安装的过程。
上一步安装完了后浏览器会显示下面的界面
到这一步,输入用户名密码等相关信息,就算大功告成了,此后我们还需要安装一些辅助插件。选择系统管理->插件管理
这里我们可以选择安装我们需要的插件,这里我们是用于iOS持续集成构建,所以我们要安装一些iOS相关的插件。
(1)iOS专用:Xcode integration
(2)Gitlab插件:GitLab Plugin
(3)Git插件: Git plugin
(4)签名证书管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
(5)脚本插件: Post-Build Script Plug-in
(6)获取仓库提交的commit log: Git Changelog Plugin
等等其它: GIT plugin / SSH Credentials Plugin
(5)iOS项目构建
经过前面的步骤和配置,我们就可以开始构建一个iOS项目了。点击创建一个新任务->输入构建项目名称
接下来我们就可以开始对项目进行配置了
1) General
这里主要是输入一些项目名称和项目描述之类的东西,一般没什么特殊的要求
2)源码管理
这里主要是配置项目仓库访问路径和公钥,首先我们配置公钥,选择 Credentials进行项目公钥配置,这里的公钥配置和其它Git配置都差不多,所以不用多说,因为我们的本地一般已经配置好项目仓库的公钥,所以进入~/.ssh,找到相应的公钥,复制过来就好,如图
我们的项目是托管在给gitlab上面的,所以我们选择Git,在Repository URL这里输入项目访问路径,Credentials选择我们刚刚配置好的公钥就好,然后我们可以在Branch Specifier (blank for ‘any’)这里输入我们需要构建的项目分支,如图所示
3)构建触发器
构建触发器,其实就是配置项目的构建自动构建周期,他的格式如下,如果有不懂的,点击后面的问好,他有关于这个的详细说明
如图是点击问号后展示的格式说明
4)构建环境设置
构建环境设置 iOS打包需要签名文件和证书,所以这部分我们勾选“Keychains and Code Signing Identities”和“Mobile Provisioning Profiles”。 这里我们又需要用到Jenkins的插件,在系统管理页面,选择“Keychains and Provisioning Profiles Management”
进入Keychains and Provisioning Profiles Management页面,点击“选择文件”按钮,分别上传自己的keychain和证书。上传成功后,我们再为keychain指明签名文件的名称。点击“Add Code Signing Identity”,最后添加成功后如下图所示:
这个Keychain其实在/Users/管理员用户名/Library/keychains/login.keychain,当把这个Keychain设置好了之后,Jenkins会把这个Keychain拷贝到/Users/Shared/Jenkins/Library/keychains这里,(Library是隐藏文件)。Provisioning Profiles文件也直接拷贝,
Code Signing Identity 直接就是钥匙串里相应证书的名字
好了现在我们回到项目配置的地方,选择刚刚配置好的东西就好,到此
5)构建
这是自动化设置的关键一步了,我们可以写一个配置脚本,也可以直接把配置写在这里,为了直观我直接把配置写在这里了:
以下我把配置贴出来
值得一题的是,这里的自动编译和打包用的是 xcodebuild xcrun ,关于xcodebuild xcrun的使用这里不多讲,网上一大堆,要是有不明白的,自己自行谷歌。
6)fir上传设置
上传到fir需要用到一个插件,这里是插件下载地址
http://7xju1s.com1.z0.glb.clouddn.com/fir-plugin(6).hpi,插件下载完成后,配置到Jenkins里边
做完上面这一步,我们回到刚刚的项目,上传到fir其实有两种方法,一种是直接配置到脚本里边,一种是在是直接配置增加构建后操作步骤,这里主要介绍后一种,点击构建后操作步骤
安装完fir的插件,这里会多一项选择,Upload to fir.im,选择这一项
配置插件
- fir.im Token(必填)
fir.im Token 查看方法:直接点击 API token 进行查看.
其它的都是选填的,这里不做介绍。我们只要保证项目能上传到fir上就行。
做完这一步我们就大功告成了,然后我们可以进行测试构建了,保存后回到刚果创建的项目,点击立即构建
构建一次,各个颜色代表的意义如下:
如果构建完后是蓝色的球,恭喜你,就构建成功了。如果构建失败了,可以查看构建日志,找到错误原因。
完整的持续集成流程
经过上面的持续化集成,现在我们就拥有了如下完整持续集成的流程
鸡汤来一发
要么忙着活,要么忙着死 —— 《肖生克的救赎》