GHA/windows: restore runtests perf with last known good Git for Windows
Use the last known good release of Git for Windows by installing it manually. It restores `runtests.pl` performance to the levels before the October 2024 and this week's fallouts which gradually deployed MSYS2 runtimes with pipe/signal/concurrency issues. Also: - restore vcpkg job's test parallelism to `-j8` (from `-j4`). - keep using the default shell for jobs not running tests. To avoid the unnecessary Git for Windows install overhead. Upsides: - good performance again. - easy to experiment with any version. Downsides: - installing the Git for Windows package takes 15-30 seconds. - we're pinned to an old package version. - no canary to tell when the issue is fixed on the runner images. Unknown: - stability. (no MSYS2 runtimes were ever stable and it's difficult to quantify if a version improves or worsens stability/flakiness, and intermittent env failures. Follow-up to1bf774df57#16217 Follow-up to5f9411f953#15380 Closes #16265
This commit is contained in:
parent
54cd27a50d
commit
116950a250
51
.github/workflows/windows.yml
vendored
51
.github/workflows/windows.yml
vendored
@ -360,7 +360,7 @@ jobs:
|
|||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: C:\msys64\usr\bin\bash.exe {0}
|
shell: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' && 'C:\_gfw\usr\bin\bash.exe {0}' || 'C:\msys64\usr\bin\bash.exe {0}' }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@ -387,6 +387,21 @@ jobs:
|
|||||||
tflags: 'skiprun'
|
tflags: 'skiprun'
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
|
- name: 'install Git for Windows'
|
||||||
|
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||||
|
shell: bash
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
mkdir /c/_gfw
|
||||||
|
cd /c/_gfw || exit 1
|
||||||
|
# The last known good Perl version (as of v2.47.1.windows.2) without pipe/signal MSYS2
|
||||||
|
# runtime (?) regressions that cause runtests.pl to run at 2.5x reduced speed, is this:
|
||||||
|
# https://github.com/git-for-windows/git/releases/tag/v2.46.2.windows.1
|
||||||
|
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 3 \
|
||||||
|
--location https://github.com/git-for-windows/git/releases/download/v2.46.2.windows.1/PortableGit-2.46.2-64-bit.7z.exe --output bin.7z
|
||||||
|
7z x -bd -y bin.7z
|
||||||
|
rm -f bin.7z
|
||||||
|
|
||||||
- name: 'cache compiler (gcc ${{ matrix.env }})'
|
- name: 'cache compiler (gcc ${{ matrix.env }})'
|
||||||
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
|
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4
|
||||||
id: cache-compiler
|
id: cache-compiler
|
||||||
@ -417,6 +432,7 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
[ '${{ matrix.type }}' = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
[ '${{ matrix.type }}' = 'Debug' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG='
|
||||||
[ '${{ matrix.type }}' = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
[ '${{ matrix.type }}' = 'Release' ] && options+=' -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE='
|
||||||
cmake -B bld -G 'MSYS Makefiles' ${options} \
|
cmake -B bld -G 'MSYS Makefiles' ${options} \
|
||||||
@ -440,6 +456,7 @@ jobs:
|
|||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5
|
||||||
|
|
||||||
- name: 'curl version'
|
- name: 'curl version'
|
||||||
@ -454,6 +471,7 @@ jobs:
|
|||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
|
||||||
|
|
||||||
- name: 'install test prereqs'
|
- name: 'install test prereqs'
|
||||||
@ -474,12 +492,14 @@ jobs:
|
|||||||
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
|
||||||
fi
|
fi
|
||||||
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin"
|
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin"
|
||||||
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
PATH="$(cygpath "${USERPROFILE}")/my-cache/${{ matrix.dir }}/bin:/c/msys64/usr/bin:$PATH"
|
||||||
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
|
||||||
|
|
||||||
linux-cross-mingw-w64:
|
linux-cross-mingw-w64:
|
||||||
@ -567,7 +587,7 @@ jobs:
|
|||||||
timeout-minutes: 55
|
timeout-minutes: 55
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: C:\msys64\usr\bin\bash.exe {0}
|
shell: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' && 'C:\_gfw\usr\bin\bash.exe {0}' || 'C:\msys64\usr\bin\bash.exe {0}' }}
|
||||||
env:
|
env:
|
||||||
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
|
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
|
||||||
VCPKG_DISABLE_METRICS: '1'
|
VCPKG_DISABLE_METRICS: '1'
|
||||||
@ -658,6 +678,21 @@ jobs:
|
|||||||
|
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
|
- name: 'install Git for Windows'
|
||||||
|
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||||
|
shell: bash
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
|
mkdir /c/_gfw
|
||||||
|
cd /c/_gfw || exit 1
|
||||||
|
# The last known good Perl version (as of v2.47.1.windows.2) without pipe/signal MSYS2
|
||||||
|
# runtime (?) regressions that cause runtests.pl to run at 2.5x reduced speed, is this:
|
||||||
|
# https://github.com/git-for-windows/git/releases/tag/v2.46.2.windows.1
|
||||||
|
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 3 \
|
||||||
|
--location https://github.com/git-for-windows/git/releases/download/v2.46.2.windows.1/PortableGit-2.46.2-64-bit.7z.exe --output bin.7z
|
||||||
|
7z x -bd -y bin.7z
|
||||||
|
rm -f bin.7z
|
||||||
|
|
||||||
- name: 'vcpkg cache setup'
|
- name: 'vcpkg cache setup'
|
||||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
|
||||||
with:
|
with:
|
||||||
@ -682,7 +717,7 @@ jobs:
|
|||||||
- name: 'configure'
|
- name: 'configure'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="/c/msys64/usr/bin:$PATH"
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
if [ '${{ matrix.plat }}' = 'uwp' ]; then
|
if [ '${{ matrix.plat }}' = 'uwp' ]; then
|
||||||
options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
options+=' -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0'
|
||||||
cflags='-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP'
|
cflags='-DWINAPI_FAMILY=WINAPI_FAMILY_PC_APP'
|
||||||
@ -721,7 +756,7 @@ jobs:
|
|||||||
- name: 'build'
|
- name: 'build'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="/c/msys64/usr/bin:$PATH"
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5
|
||||||
|
|
||||||
- name: 'curl version'
|
- name: 'curl version'
|
||||||
@ -737,7 +772,7 @@ jobs:
|
|||||||
if: ${{ matrix.tflags != 'skipall' }}
|
if: ${{ matrix.tflags != 'skipall' }}
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
PATH="/c/msys64/usr/bin:$PATH"
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
|
||||||
|
|
||||||
- name: 'install test prereqs'
|
- name: 'install test prereqs'
|
||||||
@ -756,18 +791,18 @@ jobs:
|
|||||||
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
if: ${{ matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
run: |
|
run: |
|
||||||
export TFLAGS='-j4 ~WebSockets ~SCP ~612 ${{ matrix.tflags }}'
|
export TFLAGS='-j8 ~WebSockets ~SCP ~612 ${{ matrix.tflags }}'
|
||||||
if [[ '${{ matrix.install }}' = *'libssh2[core,zlib]'* ]]; then
|
if [[ '${{ matrix.install }}' = *'libssh2[core,zlib]'* ]]; then
|
||||||
TFLAGS+=' ~SFTP'
|
TFLAGS+=' ~SFTP'
|
||||||
elif [[ '${{ matrix.install }}' = *'libssh '* ]]; then
|
elif [[ '${{ matrix.install }}' = *'libssh '* ]]; then
|
||||||
TFLAGS+=' ~614' # 'SFTP pre-quote chmod' SFTP, pre-quote, directory
|
TFLAGS+=' ~614' # 'SFTP pre-quote chmod' SFTP, pre-quote, directory
|
||||||
fi
|
fi
|
||||||
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin:/c/Program Files/OpenSSH-Win64"
|
PATH="$PWD/bld/lib:$PATH:/c/Program Files (x86)/stunnel/bin:/c/Program Files/OpenSSH-Win64"
|
||||||
PATH="/c/msys64/usr/bin:$PATH"
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
cmake --build bld --config '${{ matrix.type }}' --target test-ci
|
||||||
|
|
||||||
- name: 'build examples'
|
- name: 'build examples'
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
run: |
|
run: |
|
||||||
PATH="/c/msys64/usr/bin:$PATH"
|
[ -d /c/_gfw ] && PATH="/c/_gfw/usr/bin:$PATH"
|
||||||
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
|
cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user