利用Git和Jenkins搭建iOS CI (支持UI Test、Xcode 7、Swift)

简介

CI的全称是Continuous integration,它能够帮助开发者更方便的了解项目代码的情况,以及随时随地的进行项目打包。避免了在需要的时候,因为环境等问题造成打包时间推迟。

准备

首先是环境准备工作,我们把后面需要的下载好。

1.安装Xcode命令行工具 xcode-select --install /*Jenkins的编译、运行最终都是通过命令行来启动的 */

2.安装Jenkins brew install jenkins

/ 这里必须强调一下,运行Jenkins的电脑一定是环境非常干净的,而且需要运行在OS X系统上,最好找一台Mac mini单独来做CI,这样可以避免其他不可控情况出现。 /

/ 例如XcodeGhost的出现就是由于带有病毒的Xcode编译造成的,如果CI的环境是干净的,并且自动化打包,那么这些问题都不会出现。/ 3.安装xctool brew install xctool / Facebook开源项目,是对Xcodebuild的封装/

##

配置

1.在终端中执行启动操作:

- 启动 launchctl load ~/Library/LaunchAgents/homberw.mxcl.jenkins.plist

- 关闭 launchctl unload ~/Library/LaunchAgents/homberw.mxcl.jenkins.plist

- 查看状态 brew pin jenkins

2.打开浏览器,输入终端中打印出的地址和端口号,一般都是localhos:8080

3.正常的话,现在应该可以看到Jenkins的首页了.

点击Jenkins -> Manage Jenkins -> Manage Plugins -> Available 搜索并安装Git plugin。(这样可以才可以使用Git进行代码获取到本地进行编译打包,默认是不支持Git的)

4.新建Job(也就是New Item)

1\. Item name 可以命名为需要检测的条件,例如: iOS - Build iOS - Unit Tests ...

2.选择 Freestyle project -> Ok

3.Source Code Management 选择Git - 输入url - 项目中使用若是私有库,那么需要添加账号。 - 选择需要运行的分支,一般都是master或者产品开发分支

4.Build Trlggers - 选择 Poll SCM - 这个省事。其他配置有些麻烦。 - 输入 H/2 **** - 这个意思是每两分钟检查一次代码有变化否,如果变化则开始执行下面的操作。 - 你也可以点击右侧问号,查看其他规则。

5.Build - 选择Add build step - 选择Execute shell - 输入 /usr/local/bin/xctool -scheme 你的scheme clean /usr/local/bin/xctool -workspace 项目名字.xcworkspace -scheme 你的scheme -sdk iphonesimulator clean build 更多命令行可以查看第五步

6.Post-build Actions - Add post-build action - Build other projects - 选择下一个Job(如果编译通过,就运行单元测试,单元测试通过就运行UI测试,UI测试通过就打包...以此类推)

5.一些常用的Execute shell

**如果你使用CocoaPods,一定先执行pod install**

/usr/local/bin/xctool -scheme 你的scheme clean #清理缓存

/usr/local/bin/xctool -workspace 项目名字.xcworkspace -scheme 你的scheme -sdk iphonesimulator clean build #编译

xcodebuild -workspace 项目名字.xcworkspace -scheme 你测试的scheme -sdk iphonesimulator -destination 'name=iPhone 6' test #运行单元测试

xcodebuild -workspace 项目名字.xcworkspace -scheme 你UI测试的scheme -sdk iphonesimulator -destination 'name=iPhone 6' test #运行UI测试

/usr/local/bin/xctool -workspace 项目名字.xcworkspace -scheme 你的scheme archive #打包