Travis与iOS应用程序的持续集成
持续集成(CI)是一种软件工程实践,可自动构建和测试触发器,例如代码提交或提取请求。 通常,测试和部署花费了开发时间的很大一部分,尤其是当组织遵循较小的发布周期时。 持续集成使该过程自动进行!
设置持续集成涉及运行构建服务器,构建代理和大量配置设置。 您将负责维护构建服务器和构建代理。 如果很乏味,我们可以提供Travis ,它是CI的托管服务。
1. Travis仅适用于Github上的项目,免费适用于开源应用
2.它在专用虚拟机上运行。 因此,Travis会为您维护构建代理和构建服务器
3.它与GitHub无缝集成,并且易于配置。
注册Travis
Travis通过Github Webhooks和服务进行通信。 前往travis网站并使用Github进行注册。
您所有的Github公共项目都将同步,并显示在您的个人资料页面中。 默认情况下,所有项目都禁用Travis。 启用需要Travis集成的项目。
现在您可以看到Travis已添加到Github项目设置的Installed app部分。
推送提交或为项目创建请求请求,然后导航到Travis中的项目页面。
您将看到构建失败。 现在该让Travis知道这是一个iOS项目,并设置其他必需的配置。
设置.travis.yml
Travis根据编程语言提供了默认的构建环境和默认的构建步骤。 但是,对于iOS,它使用Facebook的xctool,该工具无法与最新的Xcode版本很好地配合使用。 Travis使用.travis.yml来了解您的项目和构建步骤。
导航到项目的根目录,并使用基本配置创建.travis.yml
vi .travis.yml
指定语言,osx_image和xcodebuild命令
语言:迅捷
osx_image:xcode9.3
脚本:xcodebuild构建
-sdk iphonesimulator
-project SplitBill.xcodeproj
方案SplitBill
-安静
CODE_SIGNING_REQUIRED =否
在终端中独立测试脚本以确保其正常运行。
使用xcodebuild -showsdks指定特定的SDK
使用xcodebuild -list来 找到方案和目标名称
注意x对于osx_image中的’xcode9.3’是小写
在Travis中触发构建! 繁荣! 您的构建成功。
运行测试
要运行测试用例,请在“测试”下为您的架构添加测试目标
在管理方案下共享模式以推送这些更改,否则它将在您的系统本地。
现在使用目标和测试命令更新脚本
xcodebuild构建
-sdk iphonesimulator11.3
-project SplitBill.xcodeproj
方案SplitBill
-destination'platform = iOS Simulator,name = iPhone X,OS = 11.3'CODE_SIGNING_REQUIRED =未测试
Instruments -s devices列出所有可能的目的地
确保项目的部署目标等于或低于指定的操作系统。
推送更改并触发Travis构建! 繁荣! 您所有的测试都通过了,如果有任何失败,构建将失败并向您发送通知
支持的椰子
Travis中的虚拟机预装有Cocoapods。 但是,如果您需要下载类似于Cocoapods的任何依赖项,则可以在before_install :步骤中指定。 Cocoapods在安装步骤中安装,并且此步骤在每个构建中都会发生。 如果您有git子模块,则可以在此处更新子模块
语言:迅捷
osx_image:xcode9.3
before_install:
-宝石安装cocoapods
安装:
-吊舱安装
脚本:xcodebuild构建
-sdk iphonesimulator11.3
-workspace SplitBill.xcworkspace
方案SplitBill
-destination'platform = iOS Simulator,name = iPhone X,OS = 11.3'
CODE_SIGNING_REQUIRED =否
测试
跳过不必要的构建
Travis默认情况下会生成每个提交。 根据工程实践,可能没有必要。
您可以通过在提交消息中添加[skip ci]或[ci skip]来防止travis构建提交。
您还可以添加将按指定的定期运行的cron作业。
我喜欢整合Travis! 比集成TeamCity更好的体验。
- 强制iOS Facebook应用程序在浏览器中打开馈送链接,而不是在WebView中
- 更改AVCaptureDeviceInput导致AVAssetWriterStatusFailed
- UITableViewCell需要reloadData()来调整高度
- 如何在Xcode8上使用Swift 2.2?
- 如何使用AFNetworking Library下载大量数据以显示更好的性能?
- IBM App中心不适用于iOS8
- Watchkit新会话不起作用
- iOS:Facebooklogin访问令牌错误:由于模拟器错误,从NSUserDefaults回落到加载访问令牌
- JSON文件设置内容types为application / json AFNetworking