#
# 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: '0.13.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: ON
     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
