mirror of
https://github.com/gosticks/SwiftGit2.git
synced 2025-10-16 11:55:34 +00:00
The Travis CI Xcode 8.2 image has two simulator devices for each device type for the latest iOS. The previous destination specifier caused xcodebuild to fail with exit status 70 and the error message: "The requested device could not be found because multiple devices matched the request."
87 lines
2.6 KiB
Bash
Executable File
87 lines
2.6 KiB
Bash
Executable File
#!/bin/bash -ex
|
|
#
|
|
# script/cibuild
|
|
# SwiftGit2
|
|
#
|
|
# Executes the build and runs tests for Mac and iOS. Designed to be invoked by
|
|
# Travis as a matrix build so that the two platform builds can run in parallel.
|
|
#
|
|
# Dependent tools & scripts:
|
|
# - script/bootstrap
|
|
# - script/update_libssl_ios
|
|
# - [xcodebuild](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html)
|
|
# - xcpretty (gem)
|
|
# - xcpretty-travis-formatter (gem)
|
|
#
|
|
# Environment Variables:
|
|
# - SCHEME: specifies which Xcode scheme to build. Set to one of the following:
|
|
# - SwiftGit2-OSX
|
|
# - SwiftGit2-iOS
|
|
# - TRAVIS: indicates when the build is being run by travis, used to invoke
|
|
# the xcpretty-travis-formatter gem for output.
|
|
|
|
if [ -z "$SCHEME" ]; then
|
|
echo "The SCHEME environment variable is empty. Please set this to one of:"
|
|
echo "- SwiftGit2-OSX"
|
|
echo "- SwiftGit2-iOS"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
##
|
|
## Configuration Variables
|
|
##
|
|
|
|
set -o pipefail
|
|
SCRIPT_DIR=$(dirname "$0")
|
|
XCWORKSPACE="SwiftGit2.xcworkspace"
|
|
XCODE_OPTIONS=$(RUN_CLANG_STATIC_ANALYZER=NO ONLY_ACTIVE_ARCH=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO)
|
|
|
|
if [ -n "$TRAVIS" ]; then
|
|
# Use a special formatter when running on TravisCI
|
|
XCPRETTY_FORMAT_OPTIONS="-f `xcpretty-travis-formatter`"
|
|
else
|
|
XCPRETTY_FORMAT_OPTIONS="--color"
|
|
fi
|
|
|
|
##
|
|
## Build Process
|
|
##
|
|
|
|
echo "*** Bootstrapping..."
|
|
"$SCRIPT_DIR/bootstrap"
|
|
|
|
if [ "$SCHEME" == "SwiftGit2-OSX" ]; then
|
|
echo "*** Building and testing $SCHEME..."
|
|
echo
|
|
|
|
xcodebuild -workspace "$XCWORKSPACE" \
|
|
-scheme "$SCHEME" \
|
|
${XCODE_OPTIONS[*]} \
|
|
build test \
|
|
2>&1 | xcpretty $XCPRETTY_FORMAT_OPTIONS
|
|
elif [ "$SCHEME" == "SwiftGit2-iOS" ]; then
|
|
echo "*** Prebuilding OpenSSL"
|
|
"$SCRIPT_DIR/update_libssl_ios"
|
|
|
|
echo "*** Creating a simulator for testing..."
|
|
# Create a new simulator device and reference it by id to avoid xcodebuild exit status 70 with the following errors:
|
|
# "The requested device could not be found because no available devices matched the request."
|
|
# "The requested device could not be found because multiple devices matched the request."
|
|
SIMULATOR_NAME="Custom Simulator"
|
|
DEVICE_ID=com.apple.CoreSimulator.SimDeviceType.iPhone-5
|
|
RUNTIME_ID=com.apple.CoreSimulator.SimRuntime.iOS-10-2
|
|
DESTINATION_ID=$(xcrun simctl create "$SIMULATOR_NAME" $DEVICE_ID $RUNTIME_ID)
|
|
|
|
echo "*** Building and testing $SCHEME..."
|
|
echo
|
|
|
|
xcodebuild -workspace "$XCWORKSPACE" \
|
|
-scheme "$SCHEME" \
|
|
-destination "id=$DESTINATION_ID" \
|
|
-sdk iphonesimulator \
|
|
${XCODE_OPTIONS[*]} \
|
|
build test \
|
|
2>&1 | xcpretty $XCPRETTY_FORMAT_OPTIONS
|
|
fi
|