appveyor.yml 4.97 KB
Newer Older
1
2
3
4
5
6
version: '{build}'

os: Visual Studio 2015

environment:
  matrix:
Arkady Shapkin's avatar
Arkady Shapkin committed
7
8
    - compiler: msvc-15-seh
      generator: "Visual Studio 15 2017"
9
      build_system: cmake
Arkady Shapkin's avatar
Arkady Shapkin committed
10
11
12
13
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017

    - compiler: msvc-15-seh
      generator: "Visual Studio 15 2017 Win64"
14
15
16
17
18
19
      build_system: cmake
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
      enabled_on_pr: yes

    - compiler: msvc-15-seh
      build_system: bazel
Arkady Shapkin's avatar
Arkady Shapkin committed
20
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
Carlos O'Ryan's avatar
Carlos O'Ryan committed
21
      enabled_on_pr: yes
Arkady Shapkin's avatar
Arkady Shapkin committed
22

23
    - compiler: msvc-14-seh
24
      build_system: cmake
25
      generator: "Visual Studio 14 2015"
Gennadiy Civil's avatar
Gennadiy Civil committed
26
      enabled_on_pr: yes
27

28
    - compiler: msvc-14-seh
29
      build_system: cmake
30
31
32
      generator: "Visual Studio 14 2015 Win64"

    - compiler: gcc-6.3.0-posix
33
      build_system: cmake
34
35
      generator: "MinGW Makefiles"
      cxx_path: 'C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin'
Gennadiy Civil's avatar
Gennadiy Civil committed
36
      enabled_on_pr: yes
37
38
39
40
41
42
43

configuration:
  - Debug

build:
  verbosity: minimal

44
install:
45
- ps: |
46
47
    Write-Output "Compiler: $env:compiler"
    Write-Output "Generator: $env:generator"
Gennadiy Civil's avatar
Gennadiy Civil committed
48
    Write-Output "Env:Configuation: $env:configuration"
Gennadiy Civil's avatar
Gennadiy Civil committed
49
    Write-Output "Env: $env"
Carlos O'Ryan's avatar
Carlos O'Ryan committed
50
    if (-not (Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER)) {
51
52
      Write-Output "This is *NOT* a pull request build"
    } else {
Carlos O'Ryan's avatar
Carlos O'Ryan committed
53
54
55
56
57
      Write-Output "This is a pull request build"
      if (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes") {
        Write-Output "PR builds are *NOT* explicitly enabled"
      }
    }
58

59
60
    # install Bazel
    if ($env:build_system -eq "bazel") {
Yannic Bonenberger's avatar
Yannic Bonenberger committed
61
        appveyor DownloadFile https://github.com/bazelbuild/bazel/releases/download/0.28.1/bazel-0.28.1-windows-x86_64.exe -FileName bazel.exe
62
63
64
65
66
67
68
69
70
    }

    if ($env:build_system -eq "cmake") {
        # git bash conflicts with MinGW makefiles
        if ($env:generator -eq "MinGW Makefiles") {
            $env:path = $env:path.replace("C:\Program Files\Git\usr\bin;", "")
            if ($env:cxx_path -ne "") {
                $env:path += ";$env:cxx_path"
            }
71
        }
72
73
    }

74
75
76
77
78
before_build:
- ps: |
     $env:root=$env:APPVEYOR_BUILD_FOLDER
     Write-Output "env:root: $env:root"

79
80
build_script:
- ps: |
Carlos O'Ryan's avatar
Carlos O'Ryan committed
81
    # Only enable some builds for pull requests, the AppVeyor queue is too long.
Carlos O'Ryan's avatar
Carlos O'Ryan committed
82
    if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) {
Carlos O'Ryan's avatar
Carlos O'Ryan committed
83
      return
84
85
86
87
88
89
90
91
92
93
94
    } else {
        # special case - build with Bazel
        if ($env:build_system -eq "bazel") {
            & $env:root\bazel.exe build -c opt //:gtest_samples
            if ($LastExitCode -eq 0) { # bazel writes to StdErr and PowerShell interprets it as an error
                $host.SetShouldExit(0)
            } else { # a real error
                throw "Exec: $ErrorMessage"
            }
            return
        }
Carlos O'Ryan's avatar
Carlos O'Ryan committed
95
    }
96
    # by default build with CMake
97
98
99
    md _build -Force | Out-Null
    cd _build

100
101
    $conf = if ($env:generator -eq "MinGW Makefiles") {"-DCMAKE_BUILD_TYPE=$env:configuration"} else {"-DCMAKE_CONFIGURATION_TYPES=Debug;Release"}
    # Disable test for MinGW (gtest tests fail, gmock tests can not build)
102
103
    $gtest_build_tests = if ($env:generator -eq "MinGW Makefiles") {"-Dgtest_build_tests=OFF"} else {"-Dgtest_build_tests=ON"}
    $gmock_build_tests = if ($env:generator -eq "MinGW Makefiles") {"-Dgmock_build_tests=OFF"} else {"-Dgmock_build_tests=ON"}
104
    & cmake -G "$env:generator" $conf -Dgtest_build_samples=ON $gtest_build_tests $gmock_build_tests ..
105
106
107
    if ($LastExitCode -ne 0) {
        throw "Exec: $ErrorMessage"
    }
108
109
    $cmake_parallel = if ($env:generator -eq "MinGW Makefiles") {"-j2"} else  {"/m"}
    & cmake --build . --config $env:configuration -- $cmake_parallel
110
111
112
113
    if ($LastExitCode -ne 0) {
        throw "Exec: $ErrorMessage"
    }

114
115
116
117
118

skip_commits:
  files:
    - '**/*.md'

119
120
test_script:
- ps: |
Carlos O'Ryan's avatar
Carlos O'Ryan committed
121
    # Only enable some builds for pull requests, the AppVeyor queue is too long.
Carlos O'Ryan's avatar
Carlos O'Ryan committed
122
    if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) {
Carlos O'Ryan's avatar
Carlos O'Ryan committed
123
124
      return
    }
125
126
127
128
129
130
131
132
    if ($env:build_system -eq "bazel") {
        # special case - testing with Bazel
        & $env:root\bazel.exe test //:gtest_samples
        if ($LastExitCode -eq 0) { # bazel writes to StdErr and PowerShell interprets it as an error
            $host.SetShouldExit(0)
        } else { # a real error
            throw "Exec: $ErrorMessage"
        }
133
    }
134
135
136
137
138
139
140
141
142
143
    if ($env:build_system -eq "cmake") {
        # built with CMake - test with CTest
        if ($env:generator -eq "MinGW Makefiles") {
            return # No test available for MinGW
        }

        & ctest -C $env:configuration --timeout 600 --output-on-failure
        if ($LastExitCode -ne 0) {
            throw "Exec: $ErrorMessage"
        }
144
    }
145
146
147
148
149
150

artifacts:
  - path: '_build/CMakeFiles/*.log'
    name: logs
  - path: '_build/Testing/**/*.xml'
    name: test_results
151
152
153
154
  - path: 'bazel-testlogs/**/test.log'
    name: test_logs
  - path: 'bazel-testlogs/**/test.xml'
    name: test_results