Jenkins 搭建iOS持续集成环境

Jenkins 搭建iOS持续集成环境

前言

那天老大和我说iOS能不能弄个持续集成环境,开始听到这个名词的时候表示好像有点高级,不懂~!后来说到Maven和Ant,大概懂了,自动打包嘛。但再具体下来看下别人的blog之类的时候发现不单单是自动打包了,还包含一些开发的思想在内。

什么是持续集成环境?

持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。许多团队发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度。

以前玩cocos的时候测试是给测试配台测试mac机器,然后我在那折腾半天把那台的Mac环境配好,然后给他们个SVN让他们update代码,然后自己打开Xcode运行程序。这样子有好也有不好,好的是崩溃了能第一时间保留现场给开发人员fix,但有时候也觉得麻烦,黑一下C++,崩溃。现在搞应用感觉这种bug很少会遇见啦,可能还不够深入吧。

跑题了,那么目标就是让开发的代码提交到git后,项目组的其他人员能随时构建一个最新的包安装到自己的手机上,每次找程序猿也可以,但太花时间,构建了一个持续集成环境后,不用每次程序猿去改工程配置,不停滴切换各个版本。

环境

Xcode 7.2
Mac OS X 10.11.1

Jenkins

Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。非常nice的一个东西,自己慢慢体会

XCTool

XCTool这个是facebook搞的一个集成工具,用来编译和打包iOS程序。我们需要用它来帮助我们在命令行自动构建项目等。

构建步骤

1、安装Ruby,RVM,Cocoapods

关于这部分的安转下面的这个链接将会非常详尽的告诉你,感谢大神的blog
iOS CocoaPods安装和使用图解

2、安装Homebrew

Homebrew是Mac下著名的包管理工具,玩过Centos的童鞋都知道yum吧,你就把它看成是Mac下的yum
终端输入

1
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

检查安装环境

1
brew doctor

3、安装Jenkins和XCTool

1
brew install jenkins

如果机子上没有1.7+的jdk,会报错,没关系,根据提示来进行依赖项的安装。

1
brew install Caskroom/cask/java

然后再执行brew install jenkins,这会应该就安装成功了。我们通过下面的命令启动Jenkins

1
java -jar /usr/local/opt/jenkins/libexec/jenkins.war

然后我们用浏览器打开本地Jenkins

来打开Jenkins,如果页面打开成功,恭喜你已经将Jenkins成功安装到你的本机。

安装XCTool

1
brew install xctool

非常easy,安装完后可以使用xctool -help来查看相应的命令来获取帮助。

4、配置Jenkins

首先项目是托管到git上的,那么我们就得通过Jenkins里的

系统配置->管理插件

安装下面几个插件,当然也可以根据项目具体情况进行安装

Git Server Plugin #Git的支持,如果用svn就不需要了
Git Client Plugin #Git的支持,如果用svn就补需要了
Git Plugin

主要就这三个,如果是svn就直接忽略吧~

我们就可以新建个项目,然后在项目配置里对项目内容进行配置,说几个重要的地方

源码管理,选用的是git
Repository URL 就是你的远程git仓库
Credentials 这个就是让你输入git仓库的账号密码

勾上Run the build in a RVM-managed environment 选项

构建下的shell脚本最为重要

直接贴shell吧

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
cd $WORKSPACE/YourProjectDir
buildDay=$(date +%Y%m%d)
buildTime=$(date +%Y%m%d%H%M)
buildPath="DEBUG/${buildDay}/YourProjectName_debug_${buildTime}.xcarchive"
ipaName="DEBUG/${buildDay}/YourProjectName_debug_${buildTime}.ipa"
pwd
/usr/local/bin/xctool -workspace YourProjectName.xcworkspace -scheme YourProjectName -sdk iphoneos9.2 clean archive -archivePath ${buildPath}
xcodebuild -exportArchive -exportFormat IPA -archivePath ${buildPath} -exportPath ${ipaName} -exportProvisioningProfile 'iOS Team Provisioning Profile: *'

首先就是用XCTool进行编译打包成archive,然后再有Xcode自带的命令行xcodebuild将archive文件打包成一个ipa
这个shell各位大神可根据自己的实际情况进行更改,至此,一个简易的持续集成环境就搭建完成了。当然还有很多东西要做,首先一个就是让别人能访问到你的这个Jenkins网页,那么这些只需要对

~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

修改–httpListenAddress=127.0.0.1改成自己的局域网IP

这样子别人就可以访问到你的网页了。进入项目在右边侧栏点击立即构建,enjoy it~~!^_^