Commit 6700f41c authored by Thomas Van Lenten's avatar Thomas Van Lenten

Travis config cleanups and move ObjC to Xcode 9.1.

Stop having travis build the test matrix and make it explicit so extra
settings are only on the test that need the, this helps make the travis
UI a little cleaner (linux hosted stuff doesn't list an Xcode version),
as well as avoid unneeded requirements limiting the travis pool something
can run on.

Small improvements to objectivec/DevTools/full_mac_build.sh to avoid some
repeated scripting and hopefully make things more reliable work with Xcode
9.x.

Don't mark the iOS tests as able to fail, hopefully with the new settings
they are stable and won't give false signals.

Simplify the case for xcode versions and fixup xcode 9.[0-1].
parent 2b3aa1c2
sudo: required # Everything is driven by the test.sh, so the language doesn't really
dist: trusty
# everything is driven by the test.sh, so the language doesn't really
# matter, it just controls the default install/script/etc. steps on # matter, it just controls the default install/script/etc. steps on
# travis. # travis.
language: cpp language: cpp
os: osx script: ./tests.sh $CONFIG
osx_image: xcode8.3
script: # The test matrix is manually built to cover a mix of linux and macOS
- ./tests.sh $CONFIG # hosted setups; this lets some extra settings be done specific to each
env: # host/language instead of forcing common values on all the tests.
- CONFIG=cpp
- CONFIG=cpp_distcheck
# Testing go requires installing golang, currently travis.sh is doing that
# with apt-get which doesn't work on OS X.
# It's nontrivial to programmatically install a new JDK from the command
# line on OS X, so we rely on testing on Linux for Java code.
- CONFIG=javascript
# iOS build log was starting to choke travis UI, so split to cover the
# Xcode Debug and Release Configurations independently.
- CONFIG=objectivec_ios_debug
- CONFIG=objectivec_ios_release
- CONFIG=objectivec_osx
- CONFIG=objectivec_cocoapods_integration
- CONFIG=python
- CONFIG=python_cpp
- CONFIG=php5.6_mac
- CONFIG=php7.0_mac
matrix: matrix:
include: include:
# -----------------------------------------------------------------
# macOS hosted tests for Objective-C
- os: osx
env: CONFIG=objectivec_osx
osx_image: xcode9.1
language: objective-c
# iOS build log was starting to choke travis UI, so split to cover the
# Xcode Debug and Release Configurations independently.
- os: osx
env: CONFIG=objectivec_ios_debug
osx_image: xcode9.1
language: objective-c
- os: osx
env: CONFIG=objectivec_ios_release
osx_image: xcode9.1
language: objective-c
- os: osx
env: CONFIG=objectivec_cocoapods_integration
osx_image: xcode9.1
language: objective-c
# -----------------------------------------------------------------
# macOS hosted tests for other languages.
- os: osx
env: CONFIG=cpp
- os: osx
env: CONFIG=cpp_distcheck
- os: osx
env: CONFIG=javascript
- os: osx
env: CONFIG=python
- os: osx
env: CONFIG=python_cpp
- os: osx
env: CONFIG=php5.6_mac
# Xcode versions force a host version of macOS:
# https://docs.travis-ci.com/user/reference/osx/#OS-X-Version
# Force macOS 10.12, the default travis image is going to be
# updated "soon", at which point this came come out:
# https://blog.travis-ci.com/2017-10-16-a-new-default-os-x-image-is-coming
osx_image: xcode8.3
- os: osx
env: CONFIG=php7.0_mac
# Same note about macOS version as on the php5.6_mac config.
osx_image: xcode8.3
# -----------------------------------------------------------------
# Linux hosted tests
# The dotnet environment requires Ubuntu 14.04 or 16.04. This # The dotnet environment requires Ubuntu 14.04 or 16.04. This
# configuration is effectively an "extra" one, outside the # configuration is effectively an "extra" one, outside the
# autogenerated matrix. # autogenerated matrix.
...@@ -35,6 +67,7 @@ matrix: ...@@ -35,6 +67,7 @@ matrix:
env: CONFIG=csharp env: CONFIG=csharp
language: csharp language: csharp
dist: trusty dist: trusty
sudo: required
dotnet: 1.0.1 dotnet: 1.0.1
mono: none mono: none
# This test is kept on travis because it doesn't play nicely with other # This test is kept on travis because it doesn't play nicely with other
...@@ -45,16 +78,14 @@ matrix: ...@@ -45,16 +78,14 @@ matrix:
# fetch pre-built Linux protoc binaries in the test. # fetch pre-built Linux protoc binaries in the test.
- os: linux - os: linux
env: CONFIG=java_compatibility env: CONFIG=java_compatibility
sudo: required
dist: trusty
# The Python compatibility test currently only runs on Linux because it will # The Python compatibility test currently only runs on Linux because it will
# fetch pre-built Linux protoc binaries in the test. # fetch pre-built Linux protoc binaries in the test.
- os: linux - os: linux
env: CONFIG=python_compatibility env: CONFIG=python_compatibility
allow_failures: sudo: required
# Mark the iOS test as flakey as xcodebuild some times fails to start the dist: trusty
# iOS Simulator.
- os: osx
env: CONFIG=objectivec_ios_debug
- os: osx
env: CONFIG=objectivec_ios_release
notifications: notifications:
email: false email: false
...@@ -253,36 +253,20 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then ...@@ -253,36 +253,20 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then
XCODEBUILD_TEST_BASE_IOS+=( XCODEBUILD_TEST_BASE_IOS+=(
-destination "platform=iOS Simulator,name=iPhone 4s,OS=9.0" # 32bit -destination "platform=iOS Simulator,name=iPhone 4s,OS=9.0" # 32bit
-destination "platform=iOS Simulator,name=iPhone 7,OS=10.0" # 64bit -destination "platform=iOS Simulator,name=iPhone 7,OS=10.0" # 64bit
-destination "platform=iOS Simulator,name=iPad 2,OS=9.0" # 32bit
-destination "platform=iOS Simulator,name=iPad Pro (9.7 inch),OS=10.0" # 64bit
) )
;; ;;
8.1* ) 8.[1-3]* )
XCODEBUILD_TEST_BASE_IOS+=(
-destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPhone 7,OS=10.1" # 64bit
-destination "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPad Pro (9.7 inch),OS=10.1" # 64bit
)
;;
8.2* )
XCODEBUILD_TEST_BASE_IOS+=(
-destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPhone 7,OS=10.2" # 64bit
-destination "platform=iOS Simulator,name=iPad 2,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPad Pro (9.7 inch),OS=10.2" # 64bit
)
;;
8.3* )
XCODEBUILD_TEST_BASE_IOS+=( XCODEBUILD_TEST_BASE_IOS+=(
-destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit -destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPhone 7,OS=latest" # 64bit -destination "platform=iOS Simulator,name=iPhone 7,OS=latest" # 64bit
) )
;; ;;
9.0* ) 9.[0-1]* )
XCODEBUILD_TEST_BASE_IOS+=( XCODEBUILD_TEST_BASE_IOS+=(
-destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit -destination "platform=iOS Simulator,name=iPhone 4s,OS=8.1" # 32bit
-destination "platform=iOS Simulator,name=iPhone 7,OS=latest" # 64bit -destination "platform=iOS Simulator,name=iPhone 7,OS=latest" # 64bit
# 9.0/9.1 both seem to often fail running destinations in parallel
-disable-concurrent-testing
) )
;; ;;
* ) * )
...@@ -299,7 +283,7 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then ...@@ -299,7 +283,7 @@ if [[ "${DO_XCODE_IOS_TESTS}" == "yes" ]] ; then
"${XCODEBUILD_TEST_BASE_IOS[@]}" -configuration Release test "${XCODEBUILD_TEST_BASE_IOS[@]}" -configuration Release test
fi fi
# Don't leave the simulator in the developer's face. # Don't leave the simulator in the developer's face.
killall Simulator killall Simulator 2> /dev/null || true
fi fi
if [[ "${DO_XCODE_OSX_TESTS}" == "yes" ]] ; then if [[ "${DO_XCODE_OSX_TESTS}" == "yes" ]] ; then
XCODEBUILD_TEST_BASE_OSX=( XCODEBUILD_TEST_BASE_OSX=(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment