mirror of
https://github.com/curl/curl.git
synced 2024-12-27 06:59:43 +08:00
547 lines
16 KiB
YAML
547 lines
16 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
|
|
#
|
|
###########################################################################
|
|
|
|
# View these jobs in the browser: https://app.circleci.com/pipelines/github/curl/curl
|
|
#
|
|
# The macOS builds use M1 (ARM) machines for platform diversity.
|
|
# See https://circleci.com/docs/configuration-reference/#macos-execution-environment
|
|
|
|
# Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference
|
|
version: 2.1
|
|
|
|
commands:
|
|
configure:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-werror --with-openssl || { tail -1000 config.log; false; }
|
|
|
|
configure-openssl-no-verbose:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --disable-verbose --enable-werror --with-openssl || { tail -1000 config.log; false; }
|
|
|
|
configure-no-proxy:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --disable-proxy --enable-werror --with-openssl || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-normal:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --without-ssl CFLAGS='-Wno-vla -mmacosx-version-min=10.9' CPPFLAGS="-I$(brew --prefix libpsl)/include" LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-debug:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --without-ssl --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-libssh2:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --without-ssl --with-libssh2=/opt/homebrew/opt/libssh2 --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-libssh-c-ares:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --with-openssl --with-libssh --enable-ares --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-libssh:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --with-openssl --with-libssh --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-c-ares:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --without-ssl --enable-ares --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-http-only:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-mqtt --disable-pop3 --disable-rtsp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ssl --without-zlib --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.15' || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-securetransport-http2:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --with-secure-transport CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.8' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-openssl-http2:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-libressl-http2:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix libressl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-torture:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --disable-shared --disable-threaded-resolver --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
configure-macos-torture-ftp:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-websockets --disable-shared --disable-threaded-resolver --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || { tail -1000 config.log; false; }
|
|
|
|
install-cares:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
sudo apt-get update && sudo apt-get install -y libc-ares-dev
|
|
|
|
install-libssh:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
sudo apt-get update && sudo apt-get install -y libssh-dev
|
|
|
|
install-deps:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
sudo apt-get update && sudo apt-get install -y libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev python3-pip libpsl-dev
|
|
sudo python3 -m pip install impacket
|
|
|
|
install-deps-brew:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
# Drop libressl as long as we're not trying to build it
|
|
echo libtool autoconf automake pkg-config nghttp2 libssh2 openssl libssh c-ares libpsl icu4c | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
|
|
while [ $? -eq 0 ]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done
|
|
sudo python3 -m pip install impacket
|
|
|
|
configure-libssh:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-werror --with-openssl --with-libssh || { tail -1000 config.log; false; }
|
|
|
|
install-wolfssl:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
source .github/scripts/VERSIONS
|
|
echo "Installing wolfSSL $WOLFSSL_VER"
|
|
curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz
|
|
tar -xzf v$WOLFSSL_VER-stable.tar.gz
|
|
cd wolfssl-$WOLFSSL_VER-stable
|
|
./autogen.sh
|
|
./configure --enable-tls13 --enable-all --enable-harden --prefix=$HOME/wssl
|
|
make install
|
|
|
|
install-wolfssh:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
source .github/scripts/VERSIONS
|
|
echo "Installing wolfSSH $WOLFSSH_VER"
|
|
curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssh/archive/v$WOLFSSH_VER-stable.tar.gz
|
|
tar -xzf v$WOLFSSH_VER-stable.tar.gz
|
|
cd wolfssh-$WOLFSSH_VER-stable
|
|
./autogen.sh
|
|
./configure --with-wolfssl=$HOME/wssl --prefix=$HOME/wssh --enable-scp --enable-sftp --disable-examples
|
|
make install
|
|
|
|
configure-cares:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-warnings --enable-werror --with-openssl --enable-ares || { tail -1000 config.log; false; }
|
|
|
|
configure-wolfssh:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
LDFLAGS="-Wl,-rpath,$HOME/wssh/lib" ./configure --enable-warnings --enable-werror --with-wolfssl=$HOME/wssl --with-wolfssh=$HOME/wssh || { tail -1000 config.log; false; }
|
|
|
|
configure-cares-debug:
|
|
steps:
|
|
- run:
|
|
command: |
|
|
autoreconf -fi
|
|
./configure --enable-debug --enable-werror --with-openssl --enable-ares || { tail -1000 config.log; false; }
|
|
|
|
build:
|
|
steps:
|
|
- run: make -j3 V=1
|
|
- run: make -j3 V=1 examples
|
|
|
|
build-macos:
|
|
steps:
|
|
- run: make -j5 V=1
|
|
- run: make -j5 V=1 examples
|
|
|
|
test:
|
|
steps:
|
|
- run: make -j3 V=1 test-ci
|
|
|
|
test-macos:
|
|
steps:
|
|
- run: make -j5 V=1 test-ci
|
|
|
|
test-torture:
|
|
steps:
|
|
- run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=25 !FTP"
|
|
|
|
test-torture-ftp:
|
|
steps:
|
|
# Test 250 takes too long, causing Circle CI to kill the job
|
|
- run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=20 FTP !250 !251"
|
|
|
|
executors:
|
|
ubuntu:
|
|
machine:
|
|
image: ubuntu-2004:2024.01.1
|
|
|
|
jobs:
|
|
basic:
|
|
executor: ubuntu
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- configure
|
|
- build
|
|
- test
|
|
|
|
no-verbose:
|
|
executor: ubuntu
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- configure-openssl-no-verbose
|
|
- build
|
|
|
|
wolfssh:
|
|
executor: ubuntu
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- install-wolfssl
|
|
- install-wolfssh
|
|
- configure-wolfssh
|
|
- build
|
|
|
|
no-proxy:
|
|
executor: ubuntu
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- configure-no-proxy
|
|
- build
|
|
- test
|
|
|
|
cares:
|
|
executor: ubuntu
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- install-cares
|
|
- configure-cares
|
|
- build
|
|
- test
|
|
|
|
libssh:
|
|
executor: ubuntu
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- install-libssh
|
|
- configure-libssh
|
|
- build
|
|
- test
|
|
|
|
arm:
|
|
machine:
|
|
image: ubuntu-2004:2024.01.1
|
|
resource_class: arm.medium
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- configure
|
|
- build
|
|
- test
|
|
|
|
arm-cares:
|
|
machine:
|
|
image: ubuntu-2004:2024.01.1
|
|
resource_class: arm.medium
|
|
steps:
|
|
- checkout
|
|
- install-deps
|
|
- install-cares
|
|
- configure-cares-debug
|
|
- build
|
|
- test
|
|
|
|
macos-arm-normal:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-normal
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-debug:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-debug
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-libssh2:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-libssh2
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-libssh-c-ares:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-libssh-c-ares
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-libssh:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-libssh
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-c-ares:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-c-ares
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-http-only:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-http-only
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-http-securetransport-http2:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-securetransport-http2
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-http-openssl-http2:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-openssl-http2
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-http-libressl-http2:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-libressl-http2
|
|
- build-macos
|
|
- test-macos
|
|
|
|
macos-arm-http-torture:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-torture
|
|
- build-macos
|
|
- test-torture
|
|
|
|
macos-arm-http-torture-ftp:
|
|
macos:
|
|
xcode: 15.0.0
|
|
resource_class: macos.m1.medium.gen1
|
|
steps:
|
|
- checkout
|
|
- install-deps-brew
|
|
- configure-macos-torture-ftp
|
|
- build-macos
|
|
- test-torture-ftp
|
|
|
|
workflows:
|
|
x86-openssl:
|
|
jobs:
|
|
- basic
|
|
|
|
openssl-c-ares:
|
|
jobs:
|
|
- cares
|
|
|
|
openssl-libssh:
|
|
jobs:
|
|
- libssh
|
|
|
|
openssl-no-proxy:
|
|
jobs:
|
|
- no-proxy
|
|
|
|
openssl-no-verbose:
|
|
jobs:
|
|
- no-verbose
|
|
|
|
wolfssl-wolfssh:
|
|
jobs:
|
|
- wolfssh
|
|
|
|
arm-openssl:
|
|
jobs:
|
|
- arm
|
|
|
|
arm-openssl-c-ares:
|
|
jobs:
|
|
- arm-cares
|
|
|
|
macos-arm-normal:
|
|
jobs:
|
|
- macos-arm-normal
|
|
|
|
macos-arm-debug:
|
|
jobs:
|
|
- macos-arm-debug
|
|
|
|
macos-arm-libssh2:
|
|
jobs:
|
|
- macos-arm-libssh2
|
|
|
|
macos-arm-libssh-c-ares:
|
|
jobs:
|
|
- macos-arm-libssh-c-ares
|
|
|
|
macos-arm-libssh:
|
|
jobs:
|
|
- macos-arm-libssh
|
|
|
|
macos-arm-c-ares:
|
|
jobs:
|
|
- macos-arm-c-ares
|
|
|
|
macos-arm-http-only:
|
|
jobs:
|
|
- macos-arm-http-only
|
|
|
|
macos-arm-http-securetransport-http2:
|
|
jobs:
|
|
- macos-arm-http-securetransport-http2
|
|
|
|
macos-arm-http-openssl-http2:
|
|
jobs:
|
|
- macos-arm-http-openssl-http2
|
|
|
|
# There are problem linking with LibreSSL on the CI boxes that prevent this
|
|
# from working.
|
|
# macos-arm-http-libressl-http2:
|
|
# jobs:
|
|
# - macos-arm-http-libressl-http2
|
|
|
|
macos-arm-http-torture:
|
|
jobs:
|
|
- macos-arm-http-torture
|
|
|
|
macos-arm-http-torture-ftp:
|
|
jobs:
|
|
- macos-arm-http-torture-ftp
|