mirror of
https://github.com/curl/curl.git
synced 2026-07-27 20:53:18 +03:00
GHA/windows: bump OpenSSH-Windows to v10, other improvements
- use it in a mingw-w64 job. - add support for native ARM64 binaries. - add ability to use built-in OpenSSH server in mingw-w64 jobs. Cherry-picked from #21199 Closes #21219
This commit is contained in:
parent
f419afd058
commit
3b8bb1a86a
1 changed files with 60 additions and 10 deletions
70
.github/workflows/windows.yml
vendored
70
.github/workflows/windows.yml
vendored
|
|
@ -34,6 +34,9 @@ permissions: {}
|
|||
env:
|
||||
CURL_CI: github
|
||||
CURL_TEST_MIN: 1700
|
||||
OPENSSH_WINDOWS_VERSION: 10.0.0.0p2-Preview
|
||||
OPENSSH_WINDOWS_SHA256_ARM64: 698c6aec31c1dd0fb996206e8741f4531a97355686b5431ef347d531b07fcd42
|
||||
OPENSSH_WINDOWS_SHA256_WIN64: 23f50f3458c4c5d0b12217c6a5ddfde0137210a30fa870e98b29827f7b43aba5
|
||||
STUNNEL_VERSION: 5.77
|
||||
STUNNEL_SHA256: 59ba0c5330de85ef474164b40cc559b2eb4e2b8d788c48b564e2257efa236384
|
||||
|
||||
|
|
@ -238,6 +241,7 @@ jobs:
|
|||
LDFLAGS: -s
|
||||
MAKEFLAGS: -j 5
|
||||
MATRIX_BUILD: '${{ matrix.build }}'
|
||||
MATRIX_OPENSSH: '${{ matrix.openssh }}'
|
||||
MATRIX_SYS: '${{ matrix.sys }}'
|
||||
MATRIX_TEST: '${{ matrix.test }}'
|
||||
strategy:
|
||||
|
|
@ -281,10 +285,10 @@ jobs:
|
|||
build: 'cmake' , sys: 'ucrt64' , env: 'ucrt-x86_64' , tflags: '-t --shallow=13 --min=700 951 to 9999',
|
||||
config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DENABLE_ARES=ON',
|
||||
install: 'mingw-w64-ucrt-x86_64-c-ares mingw-w64-ucrt-x86_64-libssh2' }
|
||||
- { name: 'gnutls', type: 'Debug',
|
||||
- { name: 'gnutls', type: 'Debug', openssh: 'OpenSSH-Windows',
|
||||
build: 'cmake' , sys: 'clang64' , env: 'clang-x86_64' , tflags: '' ,
|
||||
config: '-DENABLE_DEBUG=ON -DBUILD_SHARED_LIBS=OFF -DCURL_USE_GNUTLS=ON -DENABLE_UNICODE=OFF -DUSE_NGTCP2=ON -DCURL_ENABLE_NTLM=ON',
|
||||
install: 'mingw-w64-clang-x86_64-gnutls mingw-w64-clang-x86_64-nghttp3 mingw-w64-clang-x86_64-ngtcp2' }
|
||||
install: 'mingw-w64-clang-x86_64-gnutls mingw-w64-clang-x86_64-nghttp3 mingw-w64-clang-x86_64-ngtcp2 unzip' }
|
||||
- { name: 'schannel R', type: 'Release', image: 'windows-11-arm',
|
||||
build: 'cmake' , sys: 'clangarm64', env: 'clang-aarch64', tflags: 'skiprun' ,
|
||||
config: '-DENABLE_DEBUG=OFF -DBUILD_SHARED_LIBS=ON -DCURL_USE_SCHANNEL=ON -DENABLE_UNICODE=ON -DCURL_DROP_UNUSED=ON',
|
||||
|
|
@ -462,7 +466,27 @@ jobs:
|
|||
- name: 'install test prereqs'
|
||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||
timeout-minutes: 2
|
||||
run: /usr/bin/pacman --noconfirm --noprogressbar --sync --needed openssh
|
||||
run: |
|
||||
if [ -z "${MATRIX_OPENSSH}" ]; then # MSYS2 openssh
|
||||
/usr/bin/pacman --noconfirm --noprogressbar --sync --needed openssh
|
||||
elif [ "${MATRIX_OPENSSH}" = 'OpenSSH-Windows-builtin' ]; then
|
||||
# https://learn.microsoft.com/windows-server/administration/openssh/openssh_install_firstuse
|
||||
if [[ "${MATRIX_IMAGE}" = *'windows-2025'* ]]; then
|
||||
pwsh -Command 'Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0'
|
||||
pwsh -Command 'Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0'
|
||||
fi
|
||||
else # OpenSSH-Windows
|
||||
cd /c # no D: drive on windows-11-arm runners
|
||||
if [[ "${MATRIX_IMAGE}" = *'-arm'* ]]; then
|
||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 --retry-connrefused \
|
||||
--location "https://github.com/PowerShell/Win32-OpenSSH/releases/download/${OPENSSH_WINDOWS_VERSION}/OpenSSH-ARM64.zip" --output pkg.bin
|
||||
sha256sum pkg.bin && sha256sum pkg.bin | grep -qwF -- "${OPENSSH_WINDOWS_SHA256_ARM64}" && unzip pkg.bin && rm -f pkg.bin
|
||||
else
|
||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 --retry-connrefused \
|
||||
--location "https://github.com/PowerShell/Win32-OpenSSH/releases/download/${OPENSSH_WINDOWS_VERSION}/OpenSSH-Win64.zip" --output pkg.bin
|
||||
sha256sum pkg.bin && sha256sum pkg.bin | grep -qwF -- "${OPENSSH_WINDOWS_SHA256_WIN64}" && unzip pkg.bin && rm -f pkg.bin
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: 'run tests'
|
||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||
|
|
@ -483,6 +507,22 @@ jobs:
|
|||
export CURL_TEST_NO_TASKKILL=1 # experiment to see if it reduces flaky failures
|
||||
fi
|
||||
fi
|
||||
if [ -n "${MATRIX_OPENSSH}" ]; then # OpenSSH-Windows
|
||||
TFLAGS+=' ~601 ~603 ~617 ~619 ~621 ~641 ~665 ~2004' # SCP
|
||||
if [[ "${MATRIX_INSTALL_MSYS2} " = *'libssh '* || \
|
||||
"${MATRIX_INSTALL_VCPKG} " = *'libssh '* ]]; then
|
||||
TFLAGS+=' ~614' # 'SFTP pre-quote chmod' SFTP, pre-quote, directory
|
||||
else
|
||||
TFLAGS+=' ~3022' # 'SCP correct sha256 host key' SCP, server sha256 key check
|
||||
fi
|
||||
fi
|
||||
if [ "${MATRIX_OPENSSH}" = 'OpenSSH-Windows' ]; then
|
||||
if [[ "${MATRIX_IMAGE}" = *'-arm'* ]]; then
|
||||
PATH="/c/OpenSSH-ARM64:$PATH"
|
||||
else
|
||||
PATH="/c/OpenSSH-Win64:$PATH"
|
||||
fi
|
||||
fi
|
||||
if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
|
||||
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
||||
fi
|
||||
|
|
@ -837,8 +877,6 @@ jobs:
|
|||
MATRIX_OPENSSH: '${{ matrix.openssh }}'
|
||||
MATRIX_PLAT: '${{ matrix.plat }}'
|
||||
MATRIX_TYPE: '${{ matrix.type }}'
|
||||
OPENSSH_WINDOWS_VERSION: v9.8.1.0p1-Preview
|
||||
OPENSSH_WINDOWS_SHA256: c7a1369cd73c8165be00c66e90291c4dd67784de7c3aa3af18c68ebedffa6ea9
|
||||
VCPKG_DISABLE_METRICS: '1'
|
||||
strategy:
|
||||
matrix:
|
||||
|
|
@ -1074,7 +1112,7 @@ jobs:
|
|||
|
||||
- name: 'install test prereqs'
|
||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||
timeout-minutes: 5
|
||||
timeout-minutes: 2
|
||||
run: |
|
||||
if [ -z "${MATRIX_OPENSSH}" ]; then # MSYS2 openssh
|
||||
/usr/bin/pacman --noconfirm --noprogressbar --sync --needed openssh
|
||||
|
|
@ -1086,9 +1124,15 @@ jobs:
|
|||
fi
|
||||
else # OpenSSH-Windows
|
||||
cd /c # no D: drive on windows-11-arm runners
|
||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 --retry-connrefused \
|
||||
--location "https://github.com/PowerShell/Win32-OpenSSH/releases/download/${OPENSSH_WINDOWS_VERSION}/OpenSSH-Win64.zip" --output pkg.bin
|
||||
sha256sum pkg.bin && sha256sum pkg.bin | grep -qwF -- "${OPENSSH_WINDOWS_SHA256}" && unzip pkg.bin && rm -f pkg.bin
|
||||
if [[ "${MATRIX_IMAGE}" = *'-arm'* ]]; then
|
||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 --retry-connrefused \
|
||||
--location "https://github.com/PowerShell/Win32-OpenSSH/releases/download/${OPENSSH_WINDOWS_VERSION}/OpenSSH-ARM64.zip" --output pkg.bin
|
||||
sha256sum pkg.bin && sha256sum pkg.bin | grep -qwF -- "${OPENSSH_WINDOWS_SHA256_ARM64}" && unzip pkg.bin && rm -f pkg.bin
|
||||
else
|
||||
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 --retry-connrefused \
|
||||
--location "https://github.com/PowerShell/Win32-OpenSSH/releases/download/${OPENSSH_WINDOWS_VERSION}/OpenSSH-Win64.zip" --output pkg.bin
|
||||
sha256sum pkg.bin && sha256sum pkg.bin | grep -qwF -- "${OPENSSH_WINDOWS_SHA256_WIN64}" && unzip pkg.bin && rm -f pkg.bin
|
||||
fi
|
||||
fi
|
||||
if "bld/src/${MATRIX_TYPE}/curl.exe" --disable -V 2>/dev/null | grep smb; then
|
||||
python3 -m pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary -r tests/requirements.txt
|
||||
|
|
@ -1115,7 +1159,13 @@ jobs:
|
|||
else
|
||||
TFLAGS+=' ~3022' # 'SCP correct sha256 host key' SCP, server sha256 key check
|
||||
fi
|
||||
PATH="/c/OpenSSH-Win64:$PATH"
|
||||
fi
|
||||
if [ "${MATRIX_OPENSSH}" = 'OpenSSH-Windows' ]; then
|
||||
if [[ "${MATRIX_IMAGE}" = *'-arm'* ]]; then
|
||||
PATH="/c/OpenSSH-ARM64:$PATH"
|
||||
else
|
||||
PATH="/c/OpenSSH-Win64:$PATH"
|
||||
fi
|
||||
fi
|
||||
PATH="$PWD/bld/lib/${MATRIX_TYPE}:$PATH:/c/my-stunnel/bin"
|
||||
cmake --build bld --config "${MATRIX_TYPE}" --target test-ci
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue