1#*************************************************************************** 2# _ _ ____ _ 3# Project ___| | | | _ \| | 4# / __| | | | |_) | | 5# | (__| |_| | _ <| |___ 6# \___|\___/|_| \_\_____| 7# 8# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 9# 10# This software is licensed as described in the file COPYING, which 11# you should have received as part of this distribution. The terms 12# are also available at https://curl.se/docs/copyright.html. 13# 14# You may opt to use, copy, modify, merge, publish, distribute and/or sell 15# copies of the Software, and permit persons to whom the Software is 16# furnished to do so, under the terms of the COPYING file. 17# 18# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19# KIND, either express or implied. 20# 21# SPDX-License-Identifier: curl 22# 23########################################################################### 24# https://dev.azure.com/daniel0244/curl/_build?view=runs 25# 26# Azure Pipelines configuration: 27# https://aka.ms/yaml 28 29trigger: 30 branches: 31 include: 32 - 'master' 33 - '*/ci' 34 paths: 35 exclude: 36 - '.circleci/*' 37 - '.cirrus.yml' 38 - '.github/*' 39 - '.github/workflows/*' 40 - 'appveyor.*' 41 - 'packages/*' 42 - 'plan9/*' 43 44pr: 45 branches: 46 include: 47 - 'master' 48 paths: 49 exclude: 50 - '.circleci/*' 51 - '.cirrus.yml' 52 - '.github/*' 53 - '.github/workflows/*' 54 - 'appveyor.*' 55 - 'packages/*' 56 - 'plan9/*' 57 58variables: 59 MAKEFLAGS: '-j 2' 60 61stages: 62 63 ########################################## 64 ### Linux jobs first 65 ########################################## 66 67 - stage: linux 68 dependsOn: [] 69 jobs: 70 - job: ubuntu 71 # define defaults to make sure variables are always expanded/replaced 72 variables: 73 install: '' 74 configure: '' 75 tests: '!433' 76 timeoutInMinutes: 60 77 pool: 78 vmImage: 'ubuntu-latest' 79 strategy: 80 matrix: 81 default: 82 name: default 83 install: 84 configure: --enable-debug --with-openssl 85 disable_ipv6: 86 name: w/o IPv6 87 configure: --disable-ipv6 --with-openssl 88 disable_http_smtp_imap: 89 name: w/o HTTP/SMTP/IMAP 90 configure: --disable-http --disable-smtp --disable-imap --without-ssl 91 disable_thredres: 92 name: sync resolver 93 configure: --disable-threaded-resolver --with-openssl 94 https_only: 95 name: HTTPS only 96 configure: --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --with-openssl 97 torture: 98 name: torture 99 install: libnghttp2-dev 100 configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl 101 tests: -n -t --shallow=25 !FTP 102 steps: 103 - script: sudo apt-get update && sudo apt-get install -y stunnel4 python3-impacket libzstd-dev libbrotli-dev libpsl-dev $(install) 104 displayName: 'apt install' 105 retryCountOnTaskFailure: 3 106 107 - script: autoreconf -fi && ./configure --enable-warnings --enable-werror $(configure) 108 displayName: 'configure $(name)' 109 110 - script: make V=1 && make V=1 examples && cd tests && make V=1 111 displayName: 'compile' 112 113 - script: make V=1 test-ci 114 displayName: 'test' 115 env: 116 AZURE_ACCESS_TOKEN: "$(System.AccessToken)" 117 TFLAGS: "-ac /usr/bin/curl -r $(tests)" 118 119 - stage: scanbuild 120 dependsOn: [] 121 jobs: 122 - job: ubuntu 123 timeoutInMinutes: 30 124 pool: 125 vmImage: 'ubuntu-latest' 126 steps: 127 - script: sudo apt-get update && sudo apt-get install -y clang-tools clang libssl-dev libssh2-1-dev libpsl-dev libbrotli-dev libzstd-dev 128 displayName: 'apt install' 129 retryCountOnTaskFailure: 3 130 131 - script: autoreconf -fi 132 displayName: 'autoreconf' 133 134 - script: scan-build ./configure --enable-debug --enable-werror --with-openssl --with-libssh2 135 displayName: 'configure' 136 env: 137 CC: "clang" 138 CCX: "clang++" 139 140 - script: scan-build --status-bugs make 141 displayName: 'make' 142 143 - script: scan-build --status-bugs make examples 144 displayName: 'make examples' 145 146 ########################################## 147 ### Windows jobs below 148 ########################################## 149 150 - stage: windows 151 dependsOn: [] 152 variables: 153 agent.preferPowerShellOnContainers: true 154 jobs: 155 - job: msys2 156 # define defaults to make sure variables are always expanded/replaced 157 variables: 158 container_img: '' 159 container_cmd: '' 160 configure: '' 161 tests: '' 162 timeoutInMinutes: 120 163 pool: 164 vmImage: 'windows-2019' 165 strategy: 166 matrix: 167 mingw32_openssl: 168 name: 32-bit OpenSSL/libssh2 169 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019 170 container_cmd: C:\msys64\usr\bin\sh 171 prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2 172 configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --with-libssh2 --with-openssl --without-libpsl 173 tests: "~571" 174 mingw64_openssl: 175 name: 64-bit OpenSSL/libssh2 176 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019 177 container_cmd: C:\msys64\usr\bin\sh 178 prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2 179 configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh2 --with-openssl --without-libpsl 180 tests: "~571" 181 mingw64_libssh: 182 name: 64-bit OpenSSL/libssh 183 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019 184 container_cmd: C:\msys64\usr\bin\sh 185 prepare: pacman -S --needed --noconfirm --noprogressbar libssh-devel mingw-w64-x86_64-libssh 186 configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh --with-openssl --without-libpsl 187 tests: "~571 ~614" 188 mingw32: 189 name: 32-bit w/o zlib 190 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019 191 container_cmd: C:\msys64\usr\bin\sh 192 configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --without-zlib --without-ssl --without-libpsl 193 tests: "!203 !1143" 194 mingw64: 195 name: 64-bit w/o zlib 196 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019 197 container_cmd: C:\msys64\usr\bin\sh 198 configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --without-zlib --without-ssl --without-libpsl 199 tests: "!203 !1143" 200 mingw32_schannel: 201 name: 32-bit Schannel/SSPI/WinIDN/libssh2 202 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019 203 container_cmd: C:\msys64\usr\bin\sh 204 prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2 205 configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2 --without-libpsl 206 tests: "~571" 207 mingw64_schannel: 208 name: 64-bit Schannel/SSPI/WinIDN/libssh2 209 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019 210 container_cmd: C:\msys64\usr\bin\sh 211 prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2 212 configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2 --without-libpsl 213 tests: "~571" 214 mingw32_schannel_nozlib: 215 name: 32-bit Schannel/SSPI/WinIDN w/o zlib 216 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019 217 container_cmd: C:\msys64\usr\bin\sh 218 configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib --without-libpsl 219 tests: "!203 !1143" 220 mingw64_schannel_nozlib: 221 name: 64-bit Schannel/SSPI/WinIDN w/o zlib 222 container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019 223 container_cmd: C:\msys64\usr\bin\sh 224 configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib --without-libpsl 225 tests: "!203 !1143" 226 container: 227 image: $(container_img) 228 env: 229 MSYS2_PATH_TYPE: inherit 230 steps: 231 - script: $(container_cmd) -l -c "cd $(echo '%cd%') && $(prepare)" 232 displayName: 'prepare' 233 condition: variables.prepare 234 retryCountOnTaskFailure: 3 235 236 - script: $(container_cmd) -l -c "cd $(echo '%cd%') && autoreconf -fi && ./configure $(configure)" 237 displayName: 'configure $(name)' 238 239 - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 && make V=1 examples && cd tests && make V=1" 240 displayName: 'compile' 241 242 - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 install && PATH=/usr/bin:/bin find . -type f -path '*/.libs/*.exe' -print -execdir mv -t .. {} \;" 243 displayName: 'install' 244 245 - script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 test-ci" 246 displayName: 'test' 247 env: 248 AZURE_ACCESS_TOKEN: "$(System.AccessToken)" 249 TFLAGS: "-ac /usr/bin/curl.exe !IDN !SCP ~612 $(tests)" 250