使用jenkins+calabash+cocoapods搭建ios持续集成环境
持续集成
持续集成究竟是什么呢?根据敏捷大师Martin Fowler的定义:
持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。许多团队发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度。
只要是开发就有分工,哪怕是自己一个写也要分成多个模块。随着项目越来越大,模块也越来越多,各个模块是否可以征程协作就成了问题,有了持续集成,可以有如下好处:
- 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
- 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
- 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
下面就给大家介绍,如何使用Jenkins+Calabash搭建持续集成开发环境。
环境
XCode 5.0
Mac OS X 10.9.2
Cocoapods
CocoaPods简介
CocoaPods是一个负责管理iOS项目中第三方开源代码的工具。CocoaPods项目的源码在Github上管理。该项目开始于2011年8月12日,经过一年多的发展,现在已经超过1000次提交,并且持续保持活跃更新。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。
安装Cocoapods
安装Homebrew
Homebrew是Mac下著名的包管理工具,RVM和以后用到xctool都需要用这个来安装,相当于Ubuntu的Apt-get。
安装方法是在命令行中键入
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
之后执行环境检查
brew doctor
检查没有错误就可以使用了,如果出现错误,请参考提示进行修正。
确认无误后,可以安装第一个应用curl,一个用来下载的工具。使用命令
brew install curl
安装RVM
虽然Mac默认都带有Ruby,但是有些时候使用起来很麻烦(例如必须使用sudo来安装gem)并且只有一个版本,所以我们使用RVM来管理ruby的版本,ruby是自动化测试工具calabash的运行环境,所以必须要有。
安装方法是命令行中键入
\curl -sSL https://get.rvm.io | bash -s stable
过程中可能需要输入sudo密码。
使用淘宝源替换
sed -i .bak 's!cache.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db
安装Ruby
使用rvm下载ruby2.0版本
rvm install 2.0.0
选用2.0.0版本的ruby,并设置为默认
rvm use 2.0.0 --default
使用淘宝源替换gem源
rvm source --add http://ruby.taobao.org/
rvm source --remove https://rubygems.org/
安装Cocoapods
CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。
通过Gem安装Cocoapods
gem install cocoapods
执行cocoapods的初始化
pod setup
该过程需要到github上拉取specs,速度很慢,可以喝杯咖啡慢慢等
使用Cocoapods
首先创建一个普通项目来演示下如何使用Cocoapods。
之后在命令行里面,进入到你的项目路径
cd /path/to/your/project
pod init
之后会在项目根目录下创建好Podfile,修改下Podfile的内容
1 2 3 4
|
# #为Podfile的注释行,Podfile实际上是一个ruby代码段 platform :ios, "6.0" # platform后面跟平台和版本号,这里是ios6平台 # pod 'MKNetworkKit' 像这样写就可以引入第三方库了,为了简化,这里没有引入任何库
|
在目录执行pod插件install命令
pod install
每次使用pod install,它都会到github上更新spec库,耗费了不少时间,可以使用下面的命令跳过这个过程
pod install --no-repo-update
执行之后,会提示没有引入任何的第三方库,不要担心(因为我们真的没有引入)。你会发现目录上多了integration_test.xcworkspace这个工作区文件,以后我们就都使用这个打开项目了。
打开后如图所示
恭喜您,已经可以正常使用Cocoapods了。下一步就是使用Calabash进行自动化测试了。
Calabash
Calabash是一款开源的跨平台UI测试工具,目前支持iOS和Android。它使用Cucumber作为测试核心,Cucumber是一个在敏捷团队十分流行的自动化的功能测试工具,它使用接近于自然语言的特性文档进行用例的书写和测试,支持多语言和多平台。
安装Calabash
gem install calabash-cucumber
安装Calabash中文支持包
gem install calabash-cucumber-cn
新建集成测试的Target
重新打开工作区,然后选择integration_test这个工程,打开配置,targets中integration_test上右键进行复制。
如果出现Duplicate iPhone Target对话框,选择Duplicate Only就可以,另外一个选项是复制并转换成iPad程序。
之后修改目标的名称
修改项目配置
修改scheme
共享scheme,目的是在版本管理中,让其他用户也可以获取到这些scheme
这样新的测试目标就创建好了,为什么要创建新的目标呢?
- 不希望在发布的产品中包含测试代码
- calabash默认启动-cal结尾的目标
引入Calabash包
修改Podfile文件,加入新的pod
1 2 3
|
var cpro_id = "u6885494";
推荐阅读
-
HyperledgerComposer环境安装1.安装基本软件包**如果使用Linux安装HyperledgerComposer,请注意以下建议:以 ...
[详细]
蜡笔小新 2023-10-15 18:47:29
-
本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ...
[详细]
蜡笔小新 2023-12-14 14:01:06
-
-
记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ...
[详细]
蜡笔小新 2023-10-17 10:28:22
-
2019独角兽企业重金招聘Python工程师标准一、查看php5是否安装了curl:1在web服务器目录(Ubuntu下通常为varwww ...
[详细]
蜡笔小新 2023-10-16 12:34:16
-
Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ...
[详细]
蜡笔小新 2023-10-15 15:14:37
-
本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ...
[详细]
蜡笔小新 2023-12-14 18:24:10
-
本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ...
[详细]
蜡笔小新 2023-12-14 17:43:56
-
本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ...
[详细]
蜡笔小新 2023-12-12 03:02:49
-
篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ...
[详细]
蜡笔小新 2023-12-10 20:29:19
-
本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ...
[详细]
蜡笔小新 2023-12-09 20:30:48
-
本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ...
[详细]
蜡笔小新 2023-12-09 10:11:06
-
Linux自定义文件打开方式也可参照文本抱歉,本文前段时间写的ubuntu下的Qt工程文件默认打开方式是不好用的,因为其他的文本文件也会受到影响,强迫症患者,每次打开Qt工程都是先 ...
[详细]
蜡笔小新 2023-10-17 16:56:50
-
我无法续订几天前过期的RHELDeveloper帐户订阅。我执行了以下步骤,但是,订 ...
[详细]
蜡笔小新 2023-10-17 16:22:34
-
Docker系列七.Docker安装JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作 ...
[详细]
蜡笔小新 2023-10-15 14:14:47
-
在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ...
[详细]
蜡笔小新 2023-12-14 18:48:02
-
|