在.travis.yml中定位多个iOS版本
问题描述:
我是Travis CI的新手,并且已经针对单个项目和环境设置了基本构建和测试。 .travis.yml
看起来像这样:在.travis.yml中定位多个iOS版本
language: objective-c
osx_image: xcode7
xcode_project: ./[project]/[project].xcodeproj
xcode_scheme: [project]
xcode_sdk: iphonesimulator9.0
这很好,但我也想测试。其他iOS模拟器版本(例如8.4)。
我知道我可以在我的.travis.yml
使用xctool
从脚本部分像这样,这工作太细:
script:
xctool -project ./[project]/[project].xcodeproj -scheme [project] -sdk iphonesimulator9.0 build test
然而,我不能看到如何运行任何其他iOS版本。 Objective-C docs for Travis CI表示大量模拟器iOS版本可用于osx_image: xcode7
,但$ xcodebuild -version -sdk
在CI机器上运行时,它仅显示iOS 9可用。
我在这里错过了什么能够测试其他iOS版本对XCode安装?
答
诀窍寻找可用的模拟器运行:
$ xcrun instruments -s devices
,你会看到属性已安装的设备:
Known Devices:
Travis’s Mac (129) [00000000-0000-1000-8000-005056A6DCD8]
iPad 2 (8.1) [22540C0C-46B4-4FF8-9B74-81CA975]
iPad 2 (8.2) [03655E8B-725B-4C03-A505-8EEA0BE5A966]
iPad 2 (8.3) [BBC2737B-BE8D-403B-804F-5A36560AD47B]
etc...
于是我建有包膜矩阵瓦尔(reference )并为我想测试的模拟器/操作系统版本组合定义了UDID。脚本部分为每个定义的唯一环境变量/值执行一次。我.travis.yml文件看起来像这样:
language: objective-c
osx_image: xcode7
## Create a build matrix to execute against multiple simulators/iOS versions
## The UDID will be used below to determin the destination to test against
## where the script section will be run once for each definition
## ISO_DEVICE is not used in the script but is useful to know what OS version is tested and will show up in Travis to make it easer to read
env:
- UDID="FCBB11B4-D7C8-4085-9067-2CEDA2BFC895", IOS_DEVICE="iPhone 6 Plus (9.0)"
# - UDID="363ADE93-270B-4C2E-9286-C3C1FABE3CDD", IOS_DEVICE="iPhone 4s (8.1)"
- UDID="BE52C183-B4AF-408D-AE90-278FA4AD89EC", IOS_DEVICE="iPhone 5 (8.3)"
- UDID="FCBB11B4-D7C8-4085-9067-2CEDA2BFC895", IOS_DEVICE="iPhone 6 Plus (9.0)"
- UDID="BEEA639C-46EB-48EF-8377-A22B781A7EE2", IOS_DEVICE="iPad Air 2 (8.4)"
### Setting up the simulator for auto-test and running the build via the xcodebuild tool:
script:
# The xcrun with devices here will print out a list of available devices you can snag the UDIDs for
- xcrun instruments -s devices
- echo staring build and test...
- open -a "simulator" --args -CurrentDeviceUDID $UDID
- xcodebuild test -project ./MovingHelper/MovingHelper.xcodeproj -scheme MovingHelper -configuration Debug -sdk iphonesimulator -destination "platform=iOS Simulator,id=$UDID"
- osascript -e 'tell app "Simulator" to quit'
此版本的例子可以看出here。