使用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";
推荐阅读
-
在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ...
[详细]
蜡笔小新 2024-11-09 11:44:58
-
本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ...
[详细]
蜡笔小新 2024-11-20 18:37:27
-
-
本文详细介绍了如何在 Ubuntu 16.04 系统上配置 Qt 5.5 的交叉编译环境,特别针对 i.MX6 平台进行了优化设置。内容涵盖从基本的软件安装到高级配置的全过程。 ...
[详细]
蜡笔小新 2024-11-21 17:14:39
-
本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ...
[详细]
蜡笔小新 2024-11-18 18:26:08
-
[译] OS X 和 iOS 的测绘框架Core Plot 入门教程 ...
[详细]
蜡笔小新 2024-10-16 09:58:13
-
本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ...
[详细]
蜡笔小新 2024-11-21 20:03:03
-
本文详细介绍了在Mac平台上安装和配置MySQL的步骤,包括下载安装包、卸载MySQL以及解决命令行中找不到mysql命令的问题。 ...
[详细]
蜡笔小新 2024-11-17 18:44:08
-
Linuxbash命令行下实现可视化文件或文件夹浏览 有时候部署环境,需要配置文件路径或者载入相应的配置文件。这种情况下,如果用传统的手动修改配置的方式配置,会比较容易出意外(比 ...
[详细]
蜡笔小新 2024-11-17 12:25:19
-
由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ...
[详细]
蜡笔小新 2024-11-15 08:28:14
-
****************************************************************************************** ...
[详细]
蜡笔小新 2024-11-12 11:00:11
-
本文详细介绍了如何在 Docker 中创建 CentOS 容器,并在容器中安装 MySQL 以实现本地连接。文章内容包括镜像拉取、容器创建、MySQL 安装与配置等步骤。 ...
[详细]
蜡笔小新 2024-11-12 10:27:52
-
CentOS 7环境下Jenkins的安装与前后端应用部署详解 ...
[详细]
蜡笔小新 2024-11-04 16:46:02
-
Java中将Map及其他对象高效转换为JSON格式的方法探讨 ...
[详细]
蜡笔小新 2024-10-27 14:02:08
-
本文深入探讨了如何高效构建全面的iOS直播应用,特别聚焦于美颜功能的技术实现。通过详细解析美颜算法和优化策略,帮助开发者快速掌握关键技术和实现方法,提升用户体验。适合对直播应用开发感兴趣的开发者阅读。 ...
[详细]
蜡笔小新 2024-10-24 13:52:42
-
项目地址:github.comDanie1sDNS…DNSPageViewDNSPageView一个纯Swift的轻量级、灵活且易于使用的pageView框架 ...
[详细]
蜡笔小新 2024-10-08 18:03:51
-
|