215 lines
6.8 KiB
YAML
215 lines
6.8 KiB
YAML
os: osx
|
|
osx_image: xcode10.3
|
|
language: swift
|
|
|
|
branches:
|
|
only:
|
|
- v7
|
|
- master
|
|
- v4
|
|
- legacy-1.x
|
|
- /^\d+\.\d+\.\d+$/
|
|
stages:
|
|
- name: pretest
|
|
if: type != push OR branch =~ /^\d+\.\d+\.\d+$/
|
|
- name: lint
|
|
if: NOT branch =~ ^\d+\.\d+\.\d+$
|
|
- name: carthage
|
|
if: type != push OR branch =~ /^\d+\.\d+\.\d+$/
|
|
- name: swiftpm
|
|
if: type != push OR branch =~ /^\d+\.\d+\.\d+$/
|
|
- name: test
|
|
if: type != push OR branch =~ /^\d+\.\d+\.\d+$/
|
|
- name: deploy
|
|
if: branch =~ ^\d+\.\d+\.\d+$
|
|
jobs:
|
|
include:
|
|
- stage: pretest
|
|
name: Validate Linux test coverage completeness
|
|
install: swift test --generate-linuxmain -Xswiftc -target -Xswiftc x86_64-apple-macosx10.12
|
|
script: git diff --exit-code
|
|
|
|
- &carthage
|
|
stage: carthage
|
|
osx_image: xcode9
|
|
before_script: |
|
|
sed -i '' "s/SWIFT_TREAT_WARNINGS_AS_ERRORS = NO;/SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;/" *.xcodeproj/project.pbxproj
|
|
sed -i '' "s/GCC_TREAT_WARNINGS_AS_ERRORS = NO;/GCC_TREAT_WARNINGS_AS_ERRORS = YES;/" *.xcodeproj/project.pbxproj
|
|
script: carthage build --no-skip-current --configuration Release
|
|
name: Swift 4.0.0 / Xcode 9.0
|
|
- <<: *carthage
|
|
osx_image: xcode9.1
|
|
name: Swift 4.0.2 / Xcode 9.1
|
|
- <<: *carthage
|
|
osx_image: xcode9.2
|
|
name: Swift 4.0.3 / Xcode 9.2
|
|
- <<: *carthage
|
|
osx_image: xcode9.3
|
|
name: Swift 4.1.0 / Xcode 9.3.1
|
|
- <<: *carthage
|
|
osx_image: xcode9.4
|
|
name: Swift 4.1.2 / Xcode 9.4.1
|
|
- <<: *carthage
|
|
osx_image: xcode10.1
|
|
name: Swift 4.1.50 / Xcode 10.1
|
|
- <<: *carthage
|
|
osx_image: xcode10.3
|
|
name: Swift 4.1.51 / Xcode 10.3
|
|
- <<: *carthage
|
|
osx_image: xcode11
|
|
name: Swift 4.1.52 / Xcode 11
|
|
|
|
- &pod
|
|
stage: lint
|
|
osx_image: xcode8.3
|
|
env: SWIFT=3.1
|
|
cache: cocoapods
|
|
before_install: mv .github/PromiseKit.podspec .
|
|
install: gem install cocoapods -v '~> 1.7.0'
|
|
script: pod lib lint --subspec=PromiseKit/CorePromise --fail-fast --swift-version=$SWIFT
|
|
- <<: *pod
|
|
osx_image: xcode9.2
|
|
env: SWIFT=3.2
|
|
- <<: *pod
|
|
osx_image: xcode9.4
|
|
env: SWIFT=3.3
|
|
- <<: *pod
|
|
osx_image: xcode10.1
|
|
env: SWIFT=3.4
|
|
- <<: *pod
|
|
osx_image: xcode9.2
|
|
env: SWIFT=4.0
|
|
- <<: *pod
|
|
osx_image: xcode9.4
|
|
env: SWIFT=4.1
|
|
- <<: *pod
|
|
osx_image: xcode10.1
|
|
env: SWIFT=4.2
|
|
- <<: *pod
|
|
osx_image: xcode10.3
|
|
env: SWIFT=4.3
|
|
- <<: *pod
|
|
osx_image: xcode10.3
|
|
env: SWIFT=5.0
|
|
- <<: *pod
|
|
osx_image: xcode11
|
|
env: SWIFT=5.1
|
|
|
|
- &linux
|
|
stage: swiftpm
|
|
env: SWIFT_BUILD_VERSION=3 SWIFT_VERSION=4.0.3
|
|
name: Linux / Swift 3.2
|
|
os: linux
|
|
dist: trusty
|
|
sudo: false
|
|
language: generic
|
|
before_install: eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"
|
|
install: swift build -Xswiftc -swift-version -Xswiftc $SWIFT_BUILD_VERSION
|
|
script: "true"
|
|
osx_image: null
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=3 SWIFT_VERSION=4.1.3
|
|
name: Linux / Swift 3.3
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=3 SWIFT_VERSION=4.2.4
|
|
name: Linux / Swift 3.4
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.0.3
|
|
name: Linux / Swift 4.0.3
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.1.3
|
|
name: Linux / Swift 4.1.3
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.2.4
|
|
name: Linux / Swift 4.1.50
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=4.2 SWIFT_VERSION=4.2.4
|
|
name: Linux / Swift 4.2.4
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=4.2 SWIFT_VERSION=5.0
|
|
name: Linux / Swift 4.3
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=5 SWIFT_VERSION=5.0
|
|
name: 'Linux / Swift 5.0 / +Tests'
|
|
script: swift test -Xswiftc -swift-version -Xswiftc $SWIFT_BUILD_VERSION
|
|
- <<: *linux
|
|
env: SWIFT_BUILD_VERSION=5 SWIFT_VERSION=5.1
|
|
name: Linux / Swift 5.1
|
|
|
|
- &test
|
|
stage: test
|
|
name: macOS / Xcode 10.2
|
|
xcode_scheme: PromiseKit
|
|
xcode_project: PromiseKit.xcodeproj
|
|
xcode_destination: 'platform=macOS'
|
|
after_success: bash <(curl -s https://codecov.io/bash)
|
|
|
|
- <<: *test
|
|
name: iOS / Xcode 10.2
|
|
xcode_destination: 'platform=iOS Simulator,OS=12.2,name=iPhone SE'
|
|
|
|
- <<: *test
|
|
name: tvOS / Xcode 10.2
|
|
xcode_destination: 'platform=tvOS Simulator,OS=12.2,name=Apple TV'
|
|
|
|
- name: Promises/A+ (via WebKit JavaScript Bridge)
|
|
before_install:
|
|
set -exo pipefail
|
|
install:
|
|
bash -c "cd Tests/JS-A+; npm ci &>/dev/null && npm run --hide-modules build"
|
|
script:
|
|
xcodebuild -scheme PromiseKit -target PMKJSA+Tests -enableCodeCoverage NO -only-testing:PMKJSA+Tests test | xcpretty
|
|
cache.directories:
|
|
- Tests/JS-A+/build
|
|
- Tests/JS-A+/node_modules
|
|
|
|
- &swiftpm
|
|
stage: swiftpm
|
|
name: 'macOS / swift-tools-version: 4.0 / Swift 4.1.2'
|
|
osx_image: xcode9.4
|
|
script: swift build
|
|
- <<: *swiftpm
|
|
osx_image: xcode10.1
|
|
name: 'macOS / swift-tools-version: 4.2 / Swift 4.2.1'
|
|
- <<: *swiftpm
|
|
osx_image: xcode10.3
|
|
name: 'macOS / swift-tools-version: 5.0 / Swift 5.0.0'
|
|
- <<: *swiftpm
|
|
osx_image: xcode11
|
|
name: 'macOS / swift-tools-version: 5.0 / Swift 5.1.0'
|
|
|
|
- name: '`pod trunk push`'
|
|
stage: deploy
|
|
install: gem install cocoapods -v '~> 1.7.0'
|
|
before_script: |
|
|
mv .github/PromiseKit.podspec .
|
|
sed -i '' "s/s.version = '0.0.1'/s.version = '$TRAVIS_TAG'/g" PromiseKit.podspec
|
|
script: |
|
|
set -exo pipefail
|
|
pod trunk push --verbose --allow-warnings | tee pod.log | ruby -e 'ARGF.each{ print "." }'
|
|
# ^^ 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!
|
|
# --allow-warnings because Bolts generates warnings and CocoaPods fails you even if your deps emit warnings
|
|
after_failure: cat pod.log | grep error
|
|
|
|
- name: Generate Documentation
|
|
git.depth: false
|
|
install: gem install jazzy
|
|
script: |
|
|
set -exo pipefail
|
|
jazzy --config .github/jazzy.yml \
|
|
--github_url "https://github.com/$TRAVIS_REPO_SLUG" \
|
|
--module-version "$TRAVIS_TAG"
|
|
git remote update
|
|
git fetch origin gh-pages:gh-pages --depth 1
|
|
git checkout gh-pages
|
|
rm -rf reference/v6
|
|
mv output reference/v6
|
|
git add reference/v6
|
|
git config user.name "Travis"
|
|
git config user.email "jazzy@travis-ci.com"
|
|
git commit -m "Updated docs for v$TRAVIS_TAG"
|
|
git remote add secure-origin https://${GITHUB_TOKEN}@github.com/$TRAVIS_REPO_SLUG.git
|
|
git push secure-origin gh-pages
|