325 lines
9.2 KiB
YAML
325 lines
9.2 KiB
YAML
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
|