branches: only: - master - ^\d+\.\d+\.\d+$ stages: - lint - compile - test - deploy jobs: include: - &macOS stage: compile osx_image: xcode8.3 env: SWIFT=3.1 name: macOS / Swift 3.1 os: osx language: objective-c install: xcodebuild -scheme PromiseKit -target PromiseKit SWIFT_VERSION=$SWIFT -quiet SWIFT_TREAT_WARNINGS_AS_ERRORS=YES build script: "true" - <<: *macOS osx_image: xcode9.2 env: SWIFT=3.2 name: macOS / Swift 3.2 - <<: *macOS osx_image: xcode9.4 env: SWIFT=3.3 name: macOS / Swift 3.3 - <<: *macOS osx_image: xcode10 env: SWIFT=3.4 name: macOS / Swift 3.4 - <<: *macOS osx_image: xcode9.2 env: SWIFT=4.0 name: macOS / Swift 4.0 - <<: *macOS osx_image: xcode9.4 env: SWIFT=4.1 name: macOS / Swift 4.1 - <<: *macOS osx_image: xcode10 env: SWIFT=4.2 name: macOS / Swift 4.2 stage: test script: xcodebuild -scheme PromiseKit test -enableCodeCoverage YES after_success: bash <(curl -s https://codecov.io/bash) - &iOS stage: compile osx_image: xcode8.3 env: SWIFT=3.1 DST="OS=10.3.1,name=iPhone SE" name: iOS 10 / Swift 3.1 os: osx language: objective-c install: xcodebuild -scheme PromiseKit -target PromiseKit SWIFT_VERSION=$SWIFT -destination "$DST" -quiet SWIFT_TREAT_WARNINGS_AS_ERRORS=YES build script: "true" - <<: *iOS osx_image: xcode9.2 env: SWIFT=3.2 DST="OS=11.2,name=iPhone SE" name: iOS 11 / Swift 3.2 - <<: *iOS osx_image: xcode9.4 env: SWIFT=3.3 DST="OS=11.4,name=iPhone SE" name: iOS 11 / Swift 3.3 - <<: *iOS osx_image: xcode10 env: SWIFT=3.4 DST="OS=12.0,name=iPhone SE" name: iOS 12 / Swift 3.4 - <<: *iOS osx_image: xcode9.2 env: SWIFT=4.0 DST="OS=11.2,name=iPhone SE" name: iOS 11 / Swift 4.0 - <<: *iOS osx_image: xcode env: SWIFT=4.1 DST="OS=8.4,name=iPhone 4s" name: iOS 8 / Swift 4.1 - <<: *iOS osx_image: xcode9.4 env: SWIFT=4.1 DST="OS=9.3,name=iPhone 5s" name: iOS 9 / Swift 4.1 - <<: *iOS osx_image: xcode9.4 env: SWIFT=4.1 DST="OS=10.3.1,name=iPhone SE" name: iOS 10 / Swift 4.1 - <<: *iOS osx_image: xcode9.4 env: SWIFT=4.1 DST="OS=11.4,name=iPhone SE" name: iOS 11 / Swift 4.1 - <<: *iOS osx_image: xcode10 env: SWIFT=4.2 DST="OS=12.0,name=iPhone SE" name: iOS 12 / Swift 4.2 stage: test script: xcodebuild -scheme PromiseKit -destination "$DST" test -enableCodeCoverage YES after_success: bash <(curl -s https://codecov.io/bash) - &tvOS stage: compile name: tvOS 10 / Swift 3.1 osx_image: xcode8.3 env: SWIFT=3.1 DST="OS=10.2,name=Apple TV 1080p" os: osx language: objective-c install: xcodebuild -scheme PromiseKit -target PromiseKit SWIFT_VERSION=$SWIFT -destination "$DST" -quiet SWIFT_TREAT_WARNINGS_AS_ERRORS=YES build script: "true" - <<: *tvOS osx_image: xcode9.2 env: SWIFT=3.2 DST="OS=11.2,name=Apple TV" name: tvOS 11 / Swift 3.2 - <<: *tvOS osx_image: xcode9.4 env: SWIFT=3.3 DST="OS=11.4,name=Apple TV" name: tvOS 11 / Swift 3.3 - <<: *tvOS osx_image: xcode10 env: SWIFT=3.4 DST="OS=11.4,name=Apple TV" name: tvOS 11 / Swift 3.4 - <<: *tvOS osx_image: xcode9.2 env: SWIFT=4.0 DST="OS=11.2,name=Apple TV" name: tvOS 11 / Swift 4.0 - <<: *tvOS osx_image: xcode9.3 env: SWIFT=4.1 DST="OS=9.2,name=Apple TV 1080p" name: tvOS 9 / Swift 4.1 - <<: *tvOS osx_image: xcode9.3 env: SWIFT=4.1 DST="OS=10.2,name=Apple TV 1080p" name: tvOS 10 / Swift 4.1 - <<: *tvOS osx_image: xcode9.4 env: SWIFT=4.1 DST="OS=11.4,name=Apple TV" name: tvOS 11 / Swift 4.1 - <<: *tvOS osx_image: xcode10 env: SWIFT=4.2 DST="OS=12.0,name=Apple TV" name: tvOS 12 / Swift 4.2 stage: test script: xcodebuild -scheme PromiseKit -destination "$DST" test -enableCodeCoverage YES after_success: bash <(curl -s https://codecov.io/bash) - &watchOS stage: compile osx_image: xcode10 env: SWIFT=4.2 DST="OS=5.0,name=Apple Watch Series 3 - 42mm" name: watchOS 5 / Swift 4.2 os: osx language: objective-c script: xcodebuild -scheme PromiseKit SWIFT_VERSION=$SWIFT -destination "$DST" -quiet SWIFT_TREAT_WARNINGS_AS_ERRORS=YES build - <<: *watchOS osx_image: xcode8.3 env: SWIFT=3.1 DST="OS=3.2,name=Apple Watch - 38mm" name: watchOS 3 / Swift 3.1 - <<: *watchOS osx_image: xcode9.2 env: SWIFT=3.2 DST="OS=4.2,name=Apple Watch - 38mm" name: watchOS 4 / Swift 3.2 - <<: *watchOS osx_image: xcode9.4 env: SWIFT=3.3 DST="OS=4.3,name=Apple Watch - 38mm" name: watchOS 4 / Swift 3.3 - <<: *watchOS osx_image: xcode10 env: SWIFT=3.4 DST="OS=5.0,name=Apple Watch Series 3 - 42mm" name: watchOS 5 / Swift 3.4 - <<: *watchOS osx_image: xcode9.2 env: SWIFT=4.0 DST="OS=4.2,name=Apple Watch - 38mm" name: watchOS 4 / Swift 4.0 - <<: *watchOS osx_image: xcode9.3 env: SWIFT=4.1 DST="OS=2.2,name=Apple Watch - 38mm" name: watchOS 2 / Swift 4.1 - <<: *watchOS osx_image: xcode9.3 env: SWIFT=4.1 DST="OS=3.2,name=Apple Watch - 38mm" name: watchOS 3 / Swift 4.1 - <<: *watchOS osx_image: xcode9.4 env: SWIFT=4.1 DST="OS=4.3,name=Apple Watch - 38mm" name: watchOS 4 / Swift 4.1 - <<: *watchOS osx_image: xcode10 env: SWIFT=4.2 DST="OS=5.0,name=Apple Watch Series 3 - 42mm" name: watchOS 5 / Swift 4.2 - &pod stage: lint osx_image: xcode10 env: SWIFT=4.2 name: pod lib lint --swift-version=4.2 os: osx language: objective-c before_install: | mv .github/PromiseKit.podspec . gem install cocoapods --prerelease --version 1.6.0.beta.1 script: pod lib lint --subspec=PromiseKit/CorePromise --fail-fast --swift-version=$SWIFT - <<: *pod osx_image: xcode9.4 env: SWIFT=4.1 name: pod lib lint --swift-version=4.1 - <<: *pod osx_image: xcode9.2 env: SWIFT=4.0 name: pod lib lint --swift-version=4.0 - <<: *pod osx_image: xcode10 env: SWIFT=3.4 name: pod lib lint --swift-version=3.4 - <<: *pod osx_image: xcode9.4 env: SWIFT=3.3 name: pod lib lint --swift-version=3.3 - <<: *pod osx_image: xcode9.2 env: SWIFT=3.2 name: pod lib lint --swift-version=3.2 - <<: *pod osx_image: xcode8.3 env: SWIFT=3.1 name: pod lib lint --swift-version=3.1 - &linux stage: compile env: SWIFT_BUILD_VERSION=3 SWIFT_VERSION=4.0.3 name: Linux / Swift 3.2 os: linux dist: trusty sudo: required language: generic before_install: eval "$(curl -sL https://swiftenv.fuller.li/install.sh)" install: swift build -Xswiftc -swift-version -Xswiftc $SWIFT_BUILD_VERSION - <<: *linux env: SWIFT_BUILD_VERSION=3 SWIFT_VERSION=4.1.2 name: Linux / Swift 3.3 - <<: *linux env: SWIFT_BUILD_VERSION=3 SWIFT_VERSION=4.2 name: Linux / Swift 3.4 - <<: *linux env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.0.3 name: Linux / Swift 4.0 stage: test install: swift test -Xswiftc -swift-version -Xswiftc 4 - <<: *linux env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.1.2 name: Linux / Swift 4.1 stage: test install: swift test -Xswiftc -swift-version -Xswiftc 4 - <<: *linux env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.2 name: Linux / Swift 4.2 stage: test install: swift test -Xswiftc -swift-version -Xswiftc 4 # only run one instance of these since they test behavior - stage: test name: Promises/A+ via Javascript Bridge language: objective-c os: osx osx_image: xcode10 before_install: npm install -g npm # ^^ need newer npm than comes with the image install: | cd Tests/JS-A+ set -e npm ci npm run build set +e # ^^ `cd` on travis returns a non-zero exit code! cd ../.. xcodebuild -scheme PromiseKit -quiet SWIFT_VERSION=4.2 SWIFT_TREAT_WARNINGS_AS_ERRORS=YES build script: xcodebuild -scheme PromiseKit SWIFT_VERSION=4.2 test # TODO only run the A+ tests # TODO shouldn’t build twice! Be kind to Travis. cache: - Tests/JS-A+/build - Tests/JS-A+/node_modules - stage: deploy if: tag IS present script: | set -euxo pipefail pod trunk push --verbose --swift-version=4.2 | ruby -e 'ARGF.each{ print "." }' # This pipe because Travis times us out if there is no output # AND `pod` defaults to hardly any output # BUT `--verbose` generates so much output that Travis kills our script due to *too much* output! os: osx osx_image: xcode10 language: objective-c