#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

# build Apache Thrift on AppVeyor - https://ci.appveyor.com

version: '1.0.0.{build}'

shallow_clone: true

branches:
  only:
    - master
    - /^(release/)?\d+\.\d+\.\d+$/

os:
  - Visual Studio 2017

matrix:
  fast_finish: true

environment:
  matrix:
   - PROFILE: MSVC2017
     PLATFORM: x64
     CONFIGURATION: Release
     BUILD_SHARED_LIBS: OFF
     BOOST_VERSION: 1.67.0
     LIBEVENT_VERSION: 2.1.8
     PYTHON_VERSION: 3.6
     QT_VERSION: 5.10
     ZLIB_VERSION: 1.2.11
     DISABLED_TESTS: StressTestNonBlocking

   - PROFILE: MSVC2015
     PLATFORM: x86
     CONFIGURATION: Debug
     BUILD_SHARED_LIBS: OFF
     BOOST_VERSION: 1.62.0
     LIBEVENT_VERSION: 2.0.22
     PYTHON_VERSION: 3.5
     QT_VERSION: 5.8
     ZLIB_VERSION: 1.2.8
     DISABLED_TESTS: StressTestNonBlocking
     APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015

   - PROFILE: MINGW
     PLATFORM: x64
     CONFIGURATION: RelWithDebInfo
     DISABLED_TESTS: StressTestNonBlocking

   - PROFILE: CYGWIN
     PLATFORM: x64
     CONFIGURATION: RelWithDebInfo
     DISABLED_TESTS: (ZlibTest|OpenSSLManualInitTest|TNonblockingServerTest|StressTestNonBlocking)

install:
  - cd %APPVEYOR_BUILD_FOLDER%
  - call build\appveyor\%PROFILE:~0,4%-appveyor-install.bat
  - refreshenv

build_script:
  - cd %APPVEYOR_BUILD_FOLDER%
  - call build\appveyor\%PROFILE:~0,4%-appveyor-build.bat

test_script:
  - cd %APPVEYOR_BUILD_FOLDER%
  - call build\appveyor\%PROFILE:~0,4%-appveyor-test.bat


# artifact capture disabled as it might increase service cost for little gain:
#
# artifacts:
#  - path: local-thrift-inst
#    name: cmake installed content
#    type: zip
#
#  - path: local-thrift-build\Testing
#    name: ctest output
#    type: zip

# RDP support: use one or the other...
#
# enables RDP for each build job so you can inspect the environment at the beginning of the job:
# init:
#  - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
#
# enables RDP at the end of the build job so you can login and re-run
# commands to see why something failed...
# on_finish:
#   - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
#
# also need:
# environment:
#   APPVEYOR_RDP_PASSWORD: thr1FT2345$xyzZ
