mirror of
https://github.com/curl/curl.git
synced 2024-12-21 06:50:10 +08:00
223f601c04
This test relies on the IPv6 scope field being ignored when connecting to ipv6-localhost (i.e. [::1%259999] is treated as [::1]). Maybe this is a bit dodgy, but it works on all our test platforms except Windows. This test was disabled manually on all Windows CI builds already, so instead add an incompatible feature and precheck so it's skipped on Windows everywhere automatically.
316 lines
12 KiB
YAML
316 lines
12 KiB
YAML
#***************************************************************************
|
|
# _ _ ____ _
|
|
# Project ___| | | | _ \| |
|
|
# / __| | | | |_) | |
|
|
# | (__| |_| | _ <| |___
|
|
# \___|\___/|_| \_\_____|
|
|
#
|
|
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
#
|
|
# This software is licensed as described in the file COPYING, which
|
|
# you should have received as part of this distribution. The terms
|
|
# are also available at https://curl.se/docs/copyright.html.
|
|
#
|
|
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
|
# copies of the Software, and permit persons to whom the Software is
|
|
# furnished to do so, under the terms of the COPYING file.
|
|
#
|
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
# KIND, either express or implied.
|
|
#
|
|
# SPDX-License-Identifier: curl
|
|
#
|
|
###########################################################################
|
|
# https://dev.azure.com/daniel0244/curl/_build?view=runs
|
|
#
|
|
# Azure Pipelines configuration:
|
|
# https://aka.ms/yaml
|
|
|
|
trigger:
|
|
branches:
|
|
include:
|
|
- 'master'
|
|
- '*/ci'
|
|
paths:
|
|
exclude:
|
|
- '.circleci/*'
|
|
- '.cirrus.yml'
|
|
- '.github/*'
|
|
- '.github/workflows/*'
|
|
- 'appveyor.yml'
|
|
- 'packages/*'
|
|
- 'plan9/*'
|
|
|
|
pr:
|
|
branches:
|
|
include:
|
|
- 'master'
|
|
paths:
|
|
exclude:
|
|
- '.circleci/*'
|
|
- '.cirrus.yml'
|
|
- '.github/*'
|
|
- '.github/workflows/*'
|
|
- 'appveyor.yml'
|
|
- 'packages/*'
|
|
- 'plan9/*'
|
|
|
|
stages:
|
|
|
|
##########################################
|
|
### Linux jobs first
|
|
##########################################
|
|
|
|
- stage: linux
|
|
dependsOn: []
|
|
jobs:
|
|
- job: ubuntu
|
|
# define defaults to make sure variables are always expanded/replaced
|
|
variables:
|
|
install: ''
|
|
configure: ''
|
|
tests: '!433'
|
|
timeoutInMinutes: 60
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
strategy:
|
|
matrix:
|
|
default:
|
|
name: default
|
|
install:
|
|
configure: --enable-debug --with-openssl
|
|
disable_ipv6:
|
|
name: w/o IPv6
|
|
configure: --disable-ipv6 --with-openssl
|
|
disable_http_smtp_imap:
|
|
name: w/o HTTP/SMTP/IMAP
|
|
configure: --disable-http --disable-smtp --disable-imap --without-ssl
|
|
disable_thredres:
|
|
name: sync resolver
|
|
configure: --disable-threaded-resolver --with-openssl
|
|
https_only:
|
|
name: HTTPS only
|
|
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
|
|
torture:
|
|
name: torture
|
|
install: libnghttp2-dev
|
|
configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl
|
|
tests: -n -t --shallow=25 !FTP
|
|
steps:
|
|
- script: sudo apt-get update && sudo apt-get install -y stunnel4 python3-impacket libzstd-dev libbrotli-dev $(install)
|
|
displayName: 'apt install'
|
|
retryCountOnTaskFailure: 3
|
|
|
|
- script: autoreconf -fi && ./configure --enable-warnings --enable-werror $(configure)
|
|
displayName: 'configure $(name)'
|
|
|
|
- script: make V=1 && make V=1 examples && cd tests && make V=1
|
|
displayName: 'compile'
|
|
env:
|
|
MAKEFLAGS: "-j 2"
|
|
|
|
- script: make V=1 test-ci
|
|
displayName: 'test'
|
|
env:
|
|
AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
|
|
TFLAGS: "-ac /usr/bin/curl -r $(tests)"
|
|
|
|
- stage: distcheck
|
|
dependsOn: []
|
|
jobs:
|
|
- job: ubuntu
|
|
timeoutInMinutes: 30
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
steps:
|
|
- script: autoreconf -fi && ./configure --without-ssl
|
|
displayName: 'configure $(name)'
|
|
|
|
- script: make && ./maketgz 99.98.97
|
|
displayName: 'make tarball'
|
|
|
|
- script: |
|
|
tar xf curl-99.98.97.tar.gz
|
|
cd curl-99.98.97
|
|
./configure --prefix=$HOME/temp --without-ssl
|
|
make
|
|
make TFLAGS=1 test
|
|
make install
|
|
# basic check of the installed files
|
|
cd ..
|
|
bash scripts/installcheck.sh $HOME/temp
|
|
rm -rf curl-99.98.97
|
|
|
|
displayName: 'verify in-tree configure build'
|
|
|
|
- script: |
|
|
# verify out-of-tree build
|
|
tar xf curl-99.98.97.tar.gz
|
|
touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc
|
|
mkdir build
|
|
cd build
|
|
../curl-99.98.97/configure --without-ssl
|
|
make
|
|
make TFLAGS='-p 1 1139' test
|
|
# verify cmake build
|
|
cd ..
|
|
rm -rf curl-99.98.97
|
|
|
|
displayName: 'verify out-of-tree configure build'
|
|
|
|
- script: |
|
|
tar xf curl-99.98.97.tar.gz
|
|
cd curl-99.98.97
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
make
|
|
|
|
displayName: 'verify out-of-tree cmake build'
|
|
|
|
- stage: scanbuild
|
|
dependsOn: []
|
|
jobs:
|
|
- job: ubuntu
|
|
timeoutInMinutes: 30
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
steps:
|
|
- script: sudo apt-get update && sudo apt-get install -y clang-tools clang libssl-dev libssh2-1-dev libpsl-dev libbrotli-dev libzstd-dev
|
|
displayName: 'apt install'
|
|
retryCountOnTaskFailure: 3
|
|
|
|
- script: autoreconf -fi
|
|
displayName: 'autoreconf'
|
|
|
|
- script: scan-build ./configure --enable-debug --enable-werror --with-openssl --with-libssh2
|
|
displayName: 'configure'
|
|
env:
|
|
CC: "clang"
|
|
CCX: "clang++"
|
|
|
|
- script: scan-build --status-bugs make
|
|
displayName: 'make'
|
|
|
|
- script: scan-build --status-bugs make examples
|
|
displayName: 'make examples'
|
|
|
|
##########################################
|
|
### Windows jobs below
|
|
##########################################
|
|
|
|
- stage: windows
|
|
dependsOn: []
|
|
variables:
|
|
agent.preferPowerShellOnContainers: true
|
|
jobs:
|
|
- job: msys
|
|
# define defaults to make sure variables are always expanded/replaced
|
|
variables:
|
|
container_img: ''
|
|
container_cmd: ''
|
|
configure: ''
|
|
tests: ''
|
|
timeoutInMinutes: 120
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
strategy:
|
|
matrix:
|
|
v2_mingw32_openssl:
|
|
name: 32-bit OpenSSL/libssh2
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
|
|
container_cmd: C:\msys64\usr\bin\sh
|
|
prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2 mingw-w64-i686-python-pip mingw-w64-i686-python-wheel mingw-w64-i686-python-pyopenssl && python3 -m pip install --prefer-binary impacket
|
|
configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --with-libssh2 --with-openssl
|
|
tests: "~571"
|
|
v2_mingw64_openssl:
|
|
name: 64-bit OpenSSL/libssh2
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
|
|
container_cmd: C:\msys64\usr\bin\sh
|
|
prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2 mingw-w64-x86_64-python-pip mingw-w64-x86_64-python-wheel mingw-w64-x86_64-python-pyopenssl && python3 -m pip install --prefer-binary impacket
|
|
configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh2 --with-openssl
|
|
tests: "~571"
|
|
v2_mingw64_libssh:
|
|
name: 64-bit OpenSSL/libssh
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
|
|
container_cmd: C:\msys64\usr\bin\sh
|
|
prepare: pacman -S --needed --noconfirm --noprogressbar libssh-devel mingw-w64-x86_64-libssh
|
|
configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --with-libssh --with-openssl
|
|
tests: "~571 ~614"
|
|
v1_mingw:
|
|
name: 32-bit (legacy)
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw:ltsc2019
|
|
container_cmd: C:\MinGW\msys\1.0\bin\sh
|
|
configure: --host=i686-pc-mingw32 --build=i686-pc-mingw32 --prefix=/mingw --enable-debug --without-ssl --with-mingw1-deprecated
|
|
tests: "!203 !1143"
|
|
v1_mingw32:
|
|
name: 32-bit w/o zlib
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw32:ltsc2019
|
|
container_cmd: C:\MinGW\msys\1.0\bin\sh
|
|
configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --without-zlib --without-ssl
|
|
tests: "!203 !1143"
|
|
v1_mingw64:
|
|
name: 64-bit w/o zlib
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw64:ltsc2019
|
|
container_cmd: C:\MinGW\msys\1.0\bin\sh
|
|
configure: --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --prefix=/mingw64 --enable-debug --enable-werror --without-zlib --without-ssl
|
|
tests: "!203 !1143"
|
|
v2_mingw32_schannel:
|
|
name: 32-bit Schannel/SSPI/WinIDN/libssh2
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw32:ltsc2019
|
|
container_cmd: C:\msys64\usr\bin\sh
|
|
prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-i686-libssh2 mingw-w64-i686-python-pip mingw-w64-i686-python-wheel mingw-w64-i686-python-pyopenssl && python3 -m pip install --prefer-binary impacket
|
|
configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --with-libssh2
|
|
tests: "~571"
|
|
v2_mingw64_schannel:
|
|
name: 64-bit Schannel/SSPI/WinIDN/libssh2
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys2-mingw64:ltsc2019
|
|
container_cmd: C:\msys64\usr\bin\sh
|
|
prepare: pacman -S --needed --noconfirm --noprogressbar libssh2-devel mingw-w64-x86_64-libssh2 mingw-w64-x86_64-python-pip mingw-w64-x86_64-python-wheel mingw-w64-x86_64-python-pyopenssl && python3 -m pip install --prefer-binary impacket
|
|
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
|
|
tests: "~571"
|
|
v1_mingw_schannel:
|
|
name: 32-bit Schannel/SSPI/WinIDN (legacy)
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw:ltsc2019
|
|
container_cmd: C:\MinGW\msys\1.0\bin\sh
|
|
configure: --host=i686-pc-mingw32 --build=i686-pc-mingw32 --prefix=/mingw --enable-debug --enable-sspi --with-schannel --with-winidn --with-mingw1-deprecated
|
|
tests: "!203 !305 !311 !312 !313 !404 !1143 !2033 !2035 !2038 !2041 !2042 !2048 !2070 !2079 !2087 !3023 !3024"
|
|
v1_mingw32_schannel:
|
|
name: 32-bit Schannel/SSPI/WinIDN w/o zlib
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw32:ltsc2019
|
|
container_cmd: C:\MinGW\msys\1.0\bin\sh
|
|
configure: --host=i686-w64-mingw32 --build=i686-w64-mingw32 --prefix=/mingw32 --enable-debug --enable-werror --enable-sspi --with-schannel --with-winidn --without-zlib
|
|
tests: "!203 !1143"
|
|
v1_mingw64_schannel:
|
|
name: 64-bit Schannel/SSPI/WinIDN w/o zlib
|
|
container_img: ghcr.io/mback2k/curl-docker-winbuildenv/msys1-mingw64:ltsc2019
|
|
container_cmd: C:\MinGW\msys\1.0\bin\sh
|
|
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
|
|
tests: "!203 !1143"
|
|
container:
|
|
image: $(container_img)
|
|
env:
|
|
MSYS2_PATH_TYPE: inherit
|
|
steps:
|
|
- script: $(container_cmd) -l -c "cd $(echo '%cd%') && $(prepare)"
|
|
displayName: 'prepare'
|
|
condition: variables.prepare
|
|
retryCountOnTaskFailure: 3
|
|
|
|
- script: $(container_cmd) -l -c "cd $(echo '%cd%') && autoreconf -fi && ./configure $(configure)"
|
|
displayName: 'configure $(name)'
|
|
|
|
- script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 && make V=1 examples && cd tests && make V=1"
|
|
displayName: 'compile'
|
|
env:
|
|
MAKEFLAGS: "-j 2"
|
|
|
|
- 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 .. {} \;"
|
|
displayName: 'install'
|
|
|
|
- script: $(container_cmd) -l -c "cd $(echo '%cd%') && make V=1 test-ci"
|
|
displayName: 'test'
|
|
env:
|
|
AZURE_ACCESS_TOKEN: "$(System.AccessToken)"
|
|
TFLAGS: "-ac /usr/bin/curl.exe !IDN !SCP ~612 $(tests)"
|