appveyor.yml 10 KB
Newer Older
1 2
version: build-{build}

3
shallow_clone: true
4 5 6

skip_tags: true

7
os: Visual Studio 2013
8 9

environment:
10 11 12
  CMAKE_GENERATOR: "Visual Studio 12 2013"
  MSVCVERSION: "v120"
  MSVCYEAR: "vs2013"
13
  ENABLE_DRAFTS: ON
14
  matrix:
15 16 17 18 19 20 21 22 23 24 25 26 27 28
    - platform: Win32
      configuration: Release
      WITH_LIBSODIUM: OFF # unavailable build files for VS2008
      ENABLE_CURVE: ON
      CMAKE_GENERATOR: "Visual Studio 9 2008"
      MSVCVERSION: "v90"
      MSVCYEAR: "vs2008"
    - platform: Win32
      configuration: Release
      WITH_LIBSODIUM: ON
      ENABLE_CURVE: ON
      CMAKE_GENERATOR: "Visual Studio 10 2010"
      MSVCVERSION: "v100"
      MSVCYEAR: "vs2010"
29 30
    - platform: Win32
      configuration: Release
31 32
      WITH_LIBSODIUM: ON
      ENABLE_CURVE: ON
33 34 35
    - platform: Win32
      configuration: Release
      POLLER: epoll
36
      API_POLLER: poll
37 38
      WITH_LIBSODIUM: ON
      ENABLE_CURVE: ON
39
    - platform: Win32
40
      configuration: Debug
41 42
      WITH_LIBSODIUM: ON
      ENABLE_CURVE: ON
43 44
    - platform: x64
      configuration: Debug
45 46
      WITH_LIBSODIUM: ON
      ENABLE_CURVE: ON
47 48
    - platform: Win32
      configuration: Release
49 50
      WITH_LIBSODIUM: OFF
      ENABLE_CURVE: OFF
51
      ENABLE_DRAFTS: OFF
52 53 54 55
    - platform: Win32
      configuration: Release
      WITH_LIBSODIUM: ON
      ENABLE_CURVE: ON
56 57 58 59
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
      CMAKE_GENERATOR: "Visual Studio 14 2015"
      MSVCVERSION: "v140"
      MSVCYEAR: "vs2015"
60 61 62 63 64 65 66 67
    - platform: Win32
      configuration: Release
      WITH_LIBSODIUM: ON
      ENABLE_CURVE: ON
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
      CMAKE_GENERATOR: "Visual Studio 15 2017"
      MSVCVERSION: "v141"
      MSVCYEAR: "vs2017"
68 69 70 71
    - platform: cygwin64
      WITH_LIBSODIUM: OFF
      ENABLE_CURVE: ON
      CMAKE_GENERATOR: "Unix Makefiles"
72 73 74 75
    - platform: mingw64
      WITH_LIBSODIUM: OFF
      ENABLE_CURVE: ON
      CMAKE_GENERATOR: "MSYS Makefiles"
76 77 78

matrix:
  fast_finish: false
79 80
  allow_failures:
    - platform: cygwin64 # TODO allow failures until tests are fixed
81
    - platform: mingw64  # TODO allow failures until tests are fixed
82 83

init:
84 85 86 87 88 89
  - cmd: if "%NO_PR%"=="TRUE" (
            if "%APPVEYOR_PULL_REQUEST_NUMBER%" NEQ "" (
                echo "Build is disabled for PRs, aborting" &&
                appveyor exit
            )
         )
90 91 92 93 94
  #- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
  - cmake --version
  - msbuild /version
  - cmd: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f

95 96
cache:
    - C:\projects\libsodium
97
    - C:\cygwin64\var\cache\setup
98

99
install:
100 101
  - cmd: if "%Platform%"=="cygwin64" C:\cygwin64\setup-x86_64.exe --quiet-mode --no-shortcuts --upgrade-also --packages cmake,cygwin-devel,gcc-g++,libncurses-devel,make,pkg-config
  - cmd: if "%Platform%"=="cygwin64" set PATH=C:\cygwin64\bin;%PATH%
102 103
  - cmd: if "%Platform%"=="mingw64" C:\msys64\usr\bin\bash -lc "pacman -Qg"
  - cmd: if "%Platform%"=="mingw64" set PATH=C:\msys64\usr\bin;%PATH%
104 105 106
  - cmd: if "%Platform%"=="x64" set "CMAKE_GENERATOR=%CMAKE_GENERATOR% Win64"
  - cmd: echo "Generator='%CMAKE_GENERATOR%'"
  - cmd: echo "Platform='%Platform%'"
107
  - cmd: if "%WITH_LIBSODIUM%"=="ON" set LIBSODIUMDIR=C:\projects\libsodium
108 109 110 111 112 113 114 115
  - cmd: if "%WITH_LIBSODIUM%"=="ON" (
            if not exist "%LIBSODIUMDIR%" (
                git clone --branch stable --depth 1 --quiet "https://github.com/jedisct1/libsodium.git" %LIBSODIUMDIR%
            ) else (
                cd "%LIBSODIUMDIR%" &&
                git pull
            )
         )
116 117 118
  - cmd: if "%WITH_LIBSODIUM%"=="ON" msbuild /v:minimal /maxcpucount:%NUMBER_OF_PROCESSORS% /p:Configuration=%Configuration%DLL %LIBSODIUMDIR%\builds\msvc\%MSVCYEAR%\libsodium\libsodium.vcxproj
  - cmd: if "%WITH_LIBSODIUM%"=="ON" set SODIUM_LIBRARY_DIR="%LIBSODIUMDIR%\bin\%Platform%\%Configuration%\%MSVCVERSION%\dynamic"
  - cmd: if "%WITH_LIBSODIUM%"=="ON" set SODIUM_INCLUDE_DIR="%LIBSODIUMDIR%\src\libsodium\include"
119
  - ps: if (${env:WITH_LIBSODIUM} -eq "ON") { Copy-Item "C:\projects\libsodium\bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\libsodium.lib" -Destination "C:\projects\libsodium\bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\sodium.lib" }
120 121 122 123

clone_folder: C:\projects\libzmq

before_build:
124
  - cmd: set LIBZMQ_SRCDIR=%cd%
125
  - cmd: set LIBZMQ_BUILDDIR=C:\projects\build_libzmq
126 127 128 129
  # TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
  # - cmd: curl -L https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.1.0.1141-windows.zip -o sonar-scanner-cli-3.1.0.1141-windows.zip
  # - cmd: unzip sonar-scanner-cli-3.1.0.1141-windows.zip
  # - cmd: set BUILDLOG="%LIBZMQ_SRCDIR%\build.log"
130 131
  - cmd: md "%LIBZMQ_BUILDDIR%"
  - cd "%LIBZMQ_BUILDDIR%"
132 133 134
  - cmd: if "%PLATFORM%" == "Win32" set EXTRA_FLAGS='-D CMAKE_C_FLAGS_RELEASE="/MT" -D CMAKE_C_FLAGS_DEBUG="/MTd"'
  - cmd: if "%PLATFORM%" == "x64"   set EXTRA_FLAGS='-D CMAKE_C_FLAGS_RELEASE="/MT" -D CMAKE_C_FLAGS_DEBUG="/MTd"'
  - cmd: if "%PLATFORM%" == "cygwin64" set APPVEYOR_BUILD_FOLDER=/cygdrive/C/projects/libzmq
135
  - cmd: cmake -D CMAKE_INCLUDE_PATH="%SODIUM_INCLUDE_DIR%" -D CMAKE_LIBRARY_PATH="%SODIUM_LIBRARY_DIR%" -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D ENABLE_DRAFTS="%ENABLE_DRAFTS%" -D ENABLE_ANALYSIS="%ENABLE_ANALYSIS%" -D ENABLE_CURVE="%ENABLE_CURVE%" -D API_POLLER="%API_POLLER%" -D POLLER="%POLLER%" %EXTRA_FLAGS% -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D LIBZMQ_WERROR="ON" -G "%CMAKE_GENERATOR%" "%APPVEYOR_BUILD_FOLDER%"
136
  - cmd: cd "%LIBZMQ_SRCDIR%"
137

138
build_script:
139 140 141 142
  - cmd: set verbosity=Minimal
  - cmd: if "%MSVCYEAR%"=="vs2008" set verbosity=Normal
  - cmd: if "%MSVCYEAR%"=="vs2008" set path=C:\Windows\Microsoft.NET\Framework\v3.5;%path% 
  - cmd: cd "%LIBZMQ_BUILDDIR%"
143
  - cmd: if "%PLATFORM%" == "Win32" (
144 145 146 147 148
            if "%MSVCYEAR%"=="vs2008" (
                cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install
            ) else (
                cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install -- -verbosity:Minimal -maxcpucount -logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
            )
149
         )
150 151 152 153 154 155 156 157 158
  - cmd: if "%PLATFORM%" == "x64" (
            cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install -- -verbosity:Minimal -maxcpucount -logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
         )
  - cmd: if "%PLATFORM%" == "cygwin64" (
            cmake --build . -- -j5
         )
  - cmd: if "%PLATFORM%" == "mingw64" (
            cmake --build . -- -j5
         )
159

160 161 162 163
# TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
# build_script:
  # - cmd: msbuild %LIBZMQ_BUILDDIR%\ZeroMQ.sln /verbosity:detailed >%BUILDLOG%

164
after_build:
165 166 167 168 169 170 171 172 173 174 175 176 177 178
  # TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
  # - cmd: cd "%LIBZMQ_SRCDIR%"
  # - cmd: dir
  # - cmd: sonar-scanner-3.1.0.1141-windows\bin\sonar-scanner 
            # -Dsonar.scm.provider=git 
            # -Dsonar.projectKey=libzmq-msvc 
            # -Dsonar.organization=sigiesec-github 
            # -Dsonar.sources=include,src,tests,unittests 
            # -Dsonar.host.url=https://sonarcloud.io 
            # -Dsonar.login=%SONARQUBE_TOKEN% 
            # -Dsonar.cxx.compiler.parser="Visual C++" 
            # -Dsonar.cxx.compiler.reportPath=build.log 
            # -Dsonar.cxx.compiler.charset=UTF-8 
            # -Dsonar.cxx.compiler.regex=^(?<filename>.*)\\((?<line>[0-9]+)\\):\\x20warning\\x20(?<id>C\\d\\d\\d\\d):(?<message>.*)$
179
  - cmd: cd %LIBZMQ_BUILDDIR%\bin\%Configuration%"
180
  - cmd: if "%WITH_LIBSODIUM%"=="ON" copy "%SODIUM_LIBRARY_DIR%\libsodium.dll" .
181 182
  - cmd: 7z a -y -bd -mx=9 libzmq.zip *.exe *.dll
  - ps: Push-AppveyorArtifact "libzmq.zip" -Filename "libzmq-${env:Platform}-${env:Configuration}.zip"
183 184

test_script:
185
  - cmd: cd "%LIBZMQ_BUILDDIR%"
186 187 188 189 190 191 192 193 194 195
# TODO run tests in parallel only on selected platforms, since they fail on others, see https://github.com/zeromq/libzmq/issues/3123
  - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 12 2013" set PARALLELIZE=ON
  - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 14 2015" set PARALLELIZE=ON
  - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 12 2013 Win64" set PARALLELIZE=ON
  - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 14 2015 Win64" set PARALLELIZE=ON
  - cmd: if "%PARALLELIZE%"=="ON" (
            echo "Running tests in parallel" &&
            set TEST_OPTIONS=-j5
         )
  - cmd: ctest -C "%Configuration%" -V %TEST_OPTIONS%
196

197
# the analysis build is repeated; apparently appveyor only uses the first section that matches some branch
198 199 200 201 202
for:
-
    branches:
        only:
            - master
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
    environment:
        matrix:
            - platform: Win32
              configuration: Release
              API_POLLER: poll
              WITH_LIBSODIUM: ON
              ENABLE_CURVE: ON
              NO_PR: TRUE
            - platform: x64
              configuration: Release
              WITH_LIBSODIUM: ON
              ENABLE_CURVE: ON
              NO_PR: TRUE
            - platform: Win32
              configuration: Release
              WITH_LIBSODIUM: ON
              ENABLE_CURVE: ON
              NO_PR: TRUE
            - platform: Win32
              configuration: Release
              WITH_LIBSODIUM: ON
              ENABLE_CURVE: ON
              ENABLE_ANALYSIS: ON
              APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
              CMAKE_GENERATOR: "Visual Studio 15 2017"
              MSVCVERSION: "v141"
              MSVCYEAR: "vs2017"
              NO_PR: TRUE
-
    branches:
        only:
234 235 236 237 238 239 240 241 242 243 244 245
            - /.*analyze$/
    environment:
        matrix:
            - platform: Win32
              configuration: Release
              WITH_LIBSODIUM: ON
              ENABLE_CURVE: ON
              ENABLE_ANALYSIS: ON
              APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
              CMAKE_GENERATOR: "Visual Studio 15 2017"
              MSVCVERSION: "v141"
              MSVCYEAR: "vs2017"
246
              NO_PR: TRUE