1# Azure Pipelines (VSTS) configuration for CI builds for ICU. 2 3jobs: 4#------------------------------------------------------------------------- 5- job: ICU4J_OpenJDK_Ubuntu_1604 6 displayName: 'J: Linux OpenJDK (Ubuntu 16.04)' 7 timeoutInMinutes: 20 8 pool: 9 vmImage: 'Ubuntu 16.04' 10 demands: ant 11 steps: 12 - checkout: self 13 lfs: true 14 fetchDepth: 1 15 - script: | 16 echo "Building ICU4J" && cd icu4j && ant init && ant check 17 displayName: 'Build and Test' 18 env: 19 BUILD: ICU4J 20 - script: | 21 [ -d icu4j/out/junit-results ] && cd icu4j && cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;` 22 condition: failed() # only run if the build fails. 23 displayName: 'List failures (if any)' 24#------------------------------------------------------------------------- 25- job: ICU4C_Clang_Ubuntu_1604 26 displayName: 'C: Linux Clang (Ubuntu 16.04)' 27 timeoutInMinutes: 30 28 pool: 29 vmImage: 'Ubuntu 16.04' 30 steps: 31 - checkout: self 32 lfs: true 33 fetchDepth: 1 34 - script: | 35 cd icu4c/source && ./runConfigureICU Linux && make -j2 check 36 displayName: 'Build and Test' 37 env: 38 CC: clang 39 CXX: clang++ 40#------------------------------------------------------------------------- 41- job: ICU4C_Clang_Ubuntu_1604_WarningsAsErrors 42 displayName: 'C: Linux Clang WarningsAsErrors (Ubuntu 16.04)' 43 timeoutInMinutes: 30 44 pool: 45 vmImage: 'Ubuntu 16.04' 46 steps: 47 - checkout: self 48 lfs: true 49 fetchDepth: 1 50 - script: | 51 export CPPFLAGS="-Werror -Wall -Wextra -Wextra-semi -Wundef -Wnon-virtual-dtor" && cd icu4c/source && ./runConfigureICU Linux && make -j2 tests 52 displayName: 'Build only (WarningsAsErrors)' 53 env: 54 CC: clang 55 CXX: clang++ 56#------------------------------------------------------------------------- 57- job: ICU4C_Clang_Ubuntu_DataFilter_1604 58 displayName: 'C: Linux Clang DataFilter (Ubuntu 16.04)' 59 timeoutInMinutes: 30 60 pool: 61 vmImage: 'Ubuntu 16.04' 62 steps: 63 - checkout: self 64 lfs: true 65 fetchDepth: 1 66 - script: | 67 cd icu4c/source && \ 68 ICU_DATA_FILTER_FILE=../../.ci-builds/data-filter.json ./runConfigureICU Linux && \ 69 make -j2 tests && \ 70 \[ ! -d data/out/build/icudt66l/translit \] && \ 71 (cd test/intltest && LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./intltest translit/TransliteratorTest/TestBasicTransliteratorEvenWithoutData) 72 displayName: 'Build with Data Filter' 73 env: 74 CC: clang 75 CXX: clang++ 76#------------------------------------------------------------------------- 77- job: ICU4C_MSVC_x64_Release_Distrelease 78 displayName: 'C: MSVC 64-bit Release (VS 2017) + Distrelease' 79 timeoutInMinutes: 30 80 pool: 81 vmImage: 'vs2017-win2016' 82 demands: 83 - msbuild 84 - visualstudio 85 - Cmd 86 steps: 87 - checkout: self 88 lfs: true 89 fetchDepth: 1 90 - task: VSBuild@1 91 displayName: 'Build Solution' 92 inputs: 93 solution: icu4c/source/allinone/allinone.sln 94 platform: x64 95 configuration: Release 96 - task: BatchScript@1 97 displayName: 'Run Tests (icucheck.bat)' 98 inputs: 99 filename: icu4c/source/allinone/icucheck.bat 100 arguments: 'x64 Release' 101 - task: PowerShell@2 102 displayName: 'PowerShell: Distrelease script (x64)' 103 inputs: 104 targetType: filePath 105 filePath: 'icu4c/packaging/distrelease.ps1' 106 arguments: '-arch x64' 107 workingDirectory: icu4c 108 - task: PublishBuildArtifacts@1 109 displayName: 'Publish x64 Artifacts: icu-windows.zip' 110 inputs: 111 PathtoPublish: 'icu4c/source/dist/icu-windows.zip' 112 ArtifactName: '$(Build.BuildNumber)_ICU4C_MSVC_x64_Release' 113#------------------------------------------------------------------------- 114- job: ICU4C_MSVC_x86_Release_Distrelease 115 displayName: 'C: MSVC 32-bit Release (VS 2017) + Distrelease' 116 timeoutInMinutes: 30 117 pool: 118 vmImage: 'vs2017-win2016' 119 demands: 120 - msbuild 121 - visualstudio 122 - Cmd 123 steps: 124 - checkout: self 125 lfs: true 126 fetchDepth: 1 127 - task: VSBuild@1 128 displayName: 'Build Solution' 129 inputs: 130 solution: icu4c/source/allinone/allinone.sln 131 platform: Win32 132 configuration: Release 133 - task: PowerShell@2 134 displayName: 'PowerShell: Distrelease script (x86)' 135 inputs: 136 targetType: filePath 137 filePath: 'icu4c/packaging/distrelease.ps1' 138 arguments: '-arch x86' 139 workingDirectory: icu4c 140 - task: PublishBuildArtifacts@1 141 displayName: 'Publish x86 Artifacts: icu-windows.zip' 142 inputs: 143 PathtoPublish: 'icu4c/source/dist/icu-windows.zip' 144 ArtifactName: '$(Build.BuildNumber)_ICU4C_MSVC_x86_Release' 145#------------------------------------------------------------------------- 146- job: ICU4C_MSVC_x64_ARM32_ARM64_Release_Distrelease 147 displayName: 'C: MSVC x64 ARM32 ARM64 Release (VS 2017) + Distrelease ARM64' 148 timeoutInMinutes: 60 149 pool: 150 vmImage: 'vs2017-win2016' 151 demands: 152 - msbuild 153 - visualstudio 154 - Cmd 155 steps: 156 - checkout: self 157 lfs: true 158 fetchDepth: 1 159 - task: VSBuild@1 160 displayName: 'Build Solution' 161 inputs: 162 solution: icu4c/source/allinone/allinone.sln 163 platform: x64 164 configuration: Release 165 - task: VSBuild@1 166 displayName: 'Build ARM32' 167 inputs: 168 solution: icu4c/source/allinone/allinone.sln 169 platform: ARM 170 configuration: Release 171 - task: VSBuild@1 172 displayName: 'Build ARM64' 173 inputs: 174 solution: icu4c/source/allinone/allinone.sln 175 platform: ARM64 176 configuration: Release 177 - task: PowerShell@2 178 displayName: 'PowerShell: Distrelease script (ARM64)' 179 inputs: 180 targetType: filePath 181 filePath: 'icu4c/packaging/distrelease.ps1' 182 arguments: '-arch ARM64' 183 workingDirectory: icu4c 184 - task: PublishBuildArtifacts@1 185 displayName: 'Publish ARM64 Artifacts: icu-windows.zip' 186 inputs: 187 PathtoPublish: 'icu4c/source/dist/icu-windows.zip' 188 ArtifactName: '$(Build.BuildNumber)_ICU4C_MSVC_ARM64_Release' 189#------------------------------------------------------------------------- 190- job: ICU4C_MSVC_x64_Release_DataFilter 191 displayName: 'C: MSVC 64-bit Release DataFilter (VS 2017)' 192 timeoutInMinutes: 30 193 pool: 194 vmImage: 'vs2017-win2016' 195 demands: 196 - msbuild 197 - visualstudio 198 - Cmd 199 steps: 200 - checkout: self 201 lfs: true 202 fetchDepth: 1 203 - powershell: | 204 $filterPath = $Env:BUILD_SOURCESDIRECTORY + "\.ci-builds\data-filter.json" 205 $vstsCommandString = "vso[task.setvariable variable=ICU_DATA_FILTER_FILE]" + $filterPath 206 Write-Host "##$vstsCommandString" 207 - task: VSBuild@1 208 displayName: 'Build Solution with Data Filter' 209 inputs: 210 solution: icu4c/source/allinone/allinone.sln 211 platform: x64 212 configuration: Release 213 msbuildArgs: '/p:SkipUWP=true' 214#------------------------------------------------------------------------- 215- job: ICU4C_MSVC_x86_Debug 216 displayName: 'C: MSVC 32-bit Debug (VS 2017)' 217 timeoutInMinutes: 60 218 pool: 219 vmImage: 'vs2017-win2016' 220 demands: 221 - msbuild 222 - visualstudio 223 - Cmd 224 steps: 225 - checkout: self 226 lfs: true 227 fetchDepth: 1 228 - task: VSBuild@1 229 displayName: 'Build Solution' 230 inputs: 231 solution: icu4c/source/allinone/allinone.sln 232 platform: Win32 233 configuration: Debug 234 - task: BatchScript@1 235 displayName: 'Run Tests (icucheck.bat)' 236 inputs: 237 filename: icu4c/source/allinone/icucheck.bat 238 arguments: 'x86 Debug' 239#------------------------------------------------------------------------- 240- job: ICU4C_MSYS2_GCC_x86_64_Release 241 displayName: 'C: MSYS2 GCC x86_64 Release' 242 timeoutInMinutes: 45 243 pool: 244 vmImage: 'vs2017-win2016' 245 demands: 246 - Cmd 247 steps: 248 - checkout: self 249 lfs: true 250 fetchDepth: 1 251 - script: | 252 choco install -y msys2 253 rem refreshenv 254 displayName: 'Install MSYS2' 255 - script: | 256 c:\tools\msys64\usr\bin\bash.exe -lc "echo 'Hello World' && uname -a" 257 c:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -S mingw-w64-x86_64-toolchain" 258 c:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -S make" 259 exit 260 displayName: 'Install mingw-w64-x86_64-toolchain' 261 - script: | 262 set MSYSTEM=MINGW64 263 c:\tools\msys64\usr\bin\bash.exe -lc "cd $BUILD_SOURCESDIRECTORY && cd icu4c/source && ./runConfigureICU MinGW --prefix='/tmp/build-icu' && make -j2 check" 264 displayName: 'Build and Test' 265 - script: | 266 set MSYSTEM=MINGW64 267 c:\tools\msys64\usr\bin\bash.exe -lc "cd $BUILD_SOURCESDIRECTORY && cd icu4c/source && make install && cd /tmp/build-icu && echo 'Recursive ls' && ls -lR" 268 displayName: 'make install' 269 - script: | 270 set MSYSTEM=MINGW64 271 c:\tools\msys64\usr\bin\bash.exe -lc "echo 'Run icuinfo from MSYS shell' && cd /tmp/build-icu/bin && ./icuinfo.exe" 272 echo 'Run icuinfo from CMD shell' && cd /d C:\tools\msys64\tmp\build-icu\bin && set PATH=C:\tools\msys64\mingw64\bin;%PATH% && icuinfo.exe" 273 displayName: 'run icuinfo' 274#------------------------------------------------------------------------- 275- job: ICU4C_Clang_MacOSX_WarningsAsErrors 276 displayName: 'C: macOSX Clang WarningsAsErrors (Mojave 10.14)' 277 timeoutInMinutes: 30 278 pool: 279 vmImage: 'macOS-10.14' 280 steps: 281 - checkout: self 282 lfs: true 283 fetchDepth: 1 284 - script: | 285 export CPPFLAGS="-Werror -Wall -Wextra -Wextra-semi -Wundef -Wnon-virtual-dtor" && cd icu4c/source && ./runConfigureICU MacOSX && make -j2 tests 286 displayName: 'Build only (WarningsAsErrors)' 287 env: 288 CC: clang 289 CXX: clang++ 290