]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
GHA: move Cygwin jobs back into the Windows workflow
authorViktor Szakats <commit@vsz.me>
Mon, 30 Sep 2024 09:11:49 +0000 (11:11 +0200)
committerViktor Szakats <commit@vsz.me>
Mon, 30 Sep 2024 12:11:23 +0000 (14:11 +0200)
Cygwin jobs took 30 minutes and was the reason for moving them to their
own workflow. After recent changes, they finish in 8 minutes, which is
on par or lower than the longest Windows jobs. Thus, Cygwin can now be
moved back to the Windows workflow without causing extra wait for all
the workflow jobs to complete (and allowing a manual retry for the
remaining flaky jobs).

Notice that Cygwin still uses the cygwin/cygwin-install-action action to
install Cygwin itself. This action uses no caching and the time it takes
fluctuates widely depending on mirror speed, congestion and other
things. If Cygwin tends to hold up jobs again for this or other reasons,
this patch may be reverted.

Follow-up to 80a8e24956ff652e865113231649cb0c14f1e7c2 #15083
Follow-up to 2d8464c4cb9736144946701c5e632c817888eaec #14366

Closes #15086

.github/labeler.yml
.github/workflows/cygwin.yml [deleted file]
.github/workflows/windows.yml

index a2c024777645770febb0fa92e65b6fd5db70a2fc..908435af28c4129e588cbcc31cd9e0a6a8ed9f55 100644 (file)
@@ -526,7 +526,6 @@ Windows:
       - changed-files:
           - any-glob-to-all-files: "{\
               appveyor.*,\
-              .github/workflows/cygwin.yml,\
               .github/workflows/windows.yml,\
               CMake/Platforms/WindowsCache.cmake,\
               lib/*win32*,\
diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml
deleted file mode 100644 (file)
index b9232fa..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-# Copyright (C) Viktor Szakats
-#
-# SPDX-License-Identifier: curl
-
-name: Cygwin
-
-'on':
-  push:
-    branches:
-      - master
-      - '*/ci'
-    paths-ignore:
-      - '**/*.md'
-      - '.circleci/**'
-      - 'appveyor.*'
-      - 'packages/**'
-      - 'plan9/**'
-      - 'projects/**'
-      - 'winbuild/**'
-  pull_request:
-    branches:
-      - master
-    paths-ignore:
-      - '**/*.md'
-      - '.circleci/**'
-      - 'appveyor.*'
-      - 'packages/**'
-      - 'plan9/**'
-      - 'projects/**'
-      - 'winbuild/**'
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
-  cancel-in-progress: true
-
-permissions: {}
-
-jobs:
-  cygwin:
-    name: "cygwin, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.platform }} ${{ matrix.name }}"
-    runs-on: windows-latest
-    timeout-minutes: 45
-    defaults:
-      run:
-        shell: C:\cygwin\bin\bash.exe '{0}'
-    env:
-      SHELLOPTS: 'igncr'
-    strategy:
-      matrix:
-        include:
-          - { build: 'automake', platform: 'x86_64', tflags: 'skiprun', config: '', name: 'openssl R' }
-          - { build: 'cmake'   , platform: 'x86_64', tflags: ''       , config: '-DENABLE_DEBUG=ON -DCURL_USE_OPENSSL=ON -DENABLE_THREADED_RESOLVER=OFF', name: 'openssl' }
-      fail-fast: false
-    steps:
-      - run: git config --global core.autocrlf input
-        shell: pwsh
-      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
-      - uses: cygwin/cygwin-install-action@006ad0b0946ca6d0a3ea2d4437677fa767392401 # v4
-        with:
-          platform: ${{ matrix.platform }}
-          site: https://mirrors.kernel.org/sourceware/cygwin/
-          # https://cygwin.com/cgi-bin2/package-grep.cgi
-          packages: >-
-            autoconf libtool gcc-core gcc-g++ binutils
-            ${{ matrix.build }} make ninja
-            openssh
-            libssl-devel
-            libssh2-devel
-            libpsl-devel
-            zlib-devel
-            libbrotli-devel
-            libnghttp2-devel
-
-      - name: 'autotools autoreconf'
-        if: ${{ matrix.build == 'automake' }}
-        timeout-minutes: 2
-        run: autoreconf -fi
-
-      - name: 'autotools configure'
-        if: ${{ matrix.build == 'automake' }}
-        timeout-minutes: 5
-        run: |
-          PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
-          mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
-            --prefix="${HOME}"/install \
-            --with-openssl \
-            --with-libssh2 \
-            --disable-dependency-tracking \
-            ${{ matrix.config }}
-
-      - name: 'autotools configure log'
-        if: ${{ matrix.build == 'automake' && !cancelled() }}
-        run: cat bld/config.log 2>/dev/null || true
-
-      - name: 'curl_config.h'
-        if: ${{ matrix.build == 'automake' }}
-        run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true
-
-      - name: 'curl_config.h (full)'
-        if: ${{ matrix.build == 'automake' }}
-        run: cat bld/lib/curl_config.h || true
-
-      - name: 'autotools build'
-        if: ${{ matrix.build == 'automake' }}
-        timeout-minutes: 10
-        run: make -C bld -j5 V=1 install
-
-      - name: 'curl version'
-        if: ${{ matrix.build == 'automake' }}
-        timeout-minutes: 1
-        run: |
-          find . -name '*.exe' -o -name '*.dll'
-          bld/src/curl.exe --disable --version
-
-      - name: 'autotools build tests'
-        if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' }}
-        timeout-minutes: 15
-        run: make -C bld -j5 V=1 -C tests
-
-      - name: 'autotools run tests'
-        if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
-        timeout-minutes: 15
-        run: |
-          export TFLAGS='-j20 ${{ matrix.tflags }} ~615'
-          if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
-            TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
-          fi
-          make -C bld -j5 V=1 test-ci
-
-      - name: 'cmake configure'
-        if: ${{ matrix.build == 'cmake' }}
-        timeout-minutes: 5
-        run: |
-          PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
-          cmake -B bld -G Ninja ${options} \
-            -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
-            -DCURL_WERROR=ON \
-            -DCURL_BROTLI=ON \
-            ${{ matrix.config }}
-
-      - name: 'cmake configure log'
-        if: ${{ matrix.build == 'cmake' && !cancelled() }}
-        run: cat bld/CMakeFiles/CMake*.yaml 2>/dev/null || true
-
-      - name: 'curl_config.h'
-        if: ${{ matrix.build == 'cmake' }}
-        run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true
-
-      - name: 'curl_config.h (full)'
-        if: ${{ matrix.build == 'cmake' }}
-        run: cat bld/lib/curl_config.h || true
-
-      - name: 'cmake build'
-        if: ${{ matrix.build == 'cmake' }}
-        timeout-minutes: 10
-        run: cmake --build bld --config '${{ matrix.type }}' --parallel 5
-
-      - name: 'curl version'
-        if: ${{ matrix.build == 'cmake' }}
-        timeout-minutes: 1
-        run: |
-          find . -name '*.exe' -o -name '*.dll'
-          PATH="$PWD/bld/lib:$PATH"
-          bld/src/curl.exe --disable --version
-
-      - name: 'cmake build tests'
-        if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' }}
-        timeout-minutes: 15
-        run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
-
-      - name: 'cmake run tests'
-        if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
-        timeout-minutes: 15
-        run: |
-          export TFLAGS='-j8 ${{ matrix.tflags }} ~615'
-          if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
-            TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
-          fi
-          PATH="$PWD/bld/lib:$PATH"
-          cmake --build bld --config '${{ matrix.type }}' --target test-ci
-
-      - name: 'cmake build examples'
-        if: ${{ matrix.build == 'cmake' }}
-        timeout-minutes: 5
-        run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
index b35173b0cee4c7fb53fc5af8f8dc7910d32241d0..54ab1000a125fd607454d645eb19e174ddd3ad00 100644 (file)
@@ -36,6 +36,154 @@ concurrency:
 permissions: {}
 
 jobs:
+  cygwin:
+    name: "cygwin, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.platform }} ${{ matrix.name }}"
+    runs-on: windows-latest
+    timeout-minutes: 45
+    defaults:
+      run:
+        shell: C:\cygwin\bin\bash.exe '{0}'
+    env:
+      SHELLOPTS: 'igncr'
+    strategy:
+      matrix:
+        include:
+          - { build: 'automake', platform: 'x86_64', tflags: 'skiprun', config: '', name: 'openssl R' }
+          - { build: 'cmake'   , platform: 'x86_64', tflags: ''       , config: '-DENABLE_DEBUG=ON -DCURL_USE_OPENSSL=ON -DENABLE_THREADED_RESOLVER=OFF', name: 'openssl' }
+      fail-fast: false
+    steps:
+      - run: git config --global core.autocrlf input
+        shell: pwsh
+      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
+      - uses: cygwin/cygwin-install-action@006ad0b0946ca6d0a3ea2d4437677fa767392401 # v4
+        with:
+          platform: ${{ matrix.platform }}
+          site: https://mirrors.kernel.org/sourceware/cygwin/
+          # https://cygwin.com/cgi-bin2/package-grep.cgi
+          packages: >-
+            autoconf libtool gcc-core gcc-g++ binutils
+            ${{ matrix.build }} make ninja
+            openssh
+            libssl-devel
+            libssh2-devel
+            libpsl-devel
+            zlib-devel
+            libbrotli-devel
+            libnghttp2-devel
+
+      - name: 'autotools autoreconf'
+        if: ${{ matrix.build == 'automake' }}
+        timeout-minutes: 2
+        run: autoreconf -fi
+
+      - name: 'autotools configure'
+        if: ${{ matrix.build == 'automake' }}
+        timeout-minutes: 5
+        run: |
+          PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
+          mkdir bld && cd bld && ../configure --enable-unity --enable-test-bundles --enable-warnings --enable-werror \
+            --prefix="${HOME}"/install \
+            --with-openssl \
+            --with-libssh2 \
+            --disable-dependency-tracking \
+            ${{ matrix.config }}
+
+      - name: 'autotools configure log'
+        if: ${{ matrix.build == 'automake' && !cancelled() }}
+        run: cat bld/config.log 2>/dev/null || true
+
+      - name: 'curl_config.h'
+        if: ${{ matrix.build == 'automake' }}
+        run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true
+
+      - name: 'curl_config.h (full)'
+        if: ${{ matrix.build == 'automake' }}
+        run: cat bld/lib/curl_config.h || true
+
+      - name: 'autotools build'
+        if: ${{ matrix.build == 'automake' }}
+        timeout-minutes: 10
+        run: make -C bld -j5 V=1 install
+
+      - name: 'curl version'
+        if: ${{ matrix.build == 'automake' }}
+        timeout-minutes: 1
+        run: |
+          find . -name '*.exe' -o -name '*.dll'
+          bld/src/curl.exe --disable --version
+
+      - name: 'autotools build tests'
+        if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' }}
+        timeout-minutes: 15
+        run: make -C bld -j5 V=1 -C tests
+
+      - name: 'autotools run tests'
+        if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
+        timeout-minutes: 15
+        run: |
+          export TFLAGS='-j20 ${{ matrix.tflags }} ~615'
+          if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
+            TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
+          fi
+          make -C bld -j5 V=1 test-ci
+
+      - name: 'cmake configure'
+        if: ${{ matrix.build == 'cmake' }}
+        timeout-minutes: 5
+        run: |
+          PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32"
+          cmake -B bld -G Ninja ${options} \
+            -DCMAKE_UNITY_BUILD=ON -DCURL_TEST_BUNDLES=ON \
+            -DCURL_WERROR=ON \
+            -DCURL_BROTLI=ON \
+            ${{ matrix.config }}
+
+      - name: 'cmake configure log'
+        if: ${{ matrix.build == 'cmake' && !cancelled() }}
+        run: cat bld/CMakeFiles/CMake*.yaml 2>/dev/null || true
+
+      - name: 'curl_config.h'
+        if: ${{ matrix.build == 'cmake' }}
+        run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true
+
+      - name: 'curl_config.h (full)'
+        if: ${{ matrix.build == 'cmake' }}
+        run: cat bld/lib/curl_config.h || true
+
+      - name: 'cmake build'
+        if: ${{ matrix.build == 'cmake' }}
+        timeout-minutes: 10
+        run: cmake --build bld --config '${{ matrix.type }}' --parallel 5
+
+      - name: 'curl version'
+        if: ${{ matrix.build == 'cmake' }}
+        timeout-minutes: 1
+        run: |
+          find . -name '*.exe' -o -name '*.dll'
+          PATH="$PWD/bld/lib:$PATH"
+          bld/src/curl.exe --disable --version
+
+      - name: 'cmake build tests'
+        if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' }}
+        timeout-minutes: 15
+        run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps
+
+      - name: 'cmake run tests'
+        if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }}
+        timeout-minutes: 15
+        run: |
+          export TFLAGS='-j8 ${{ matrix.tflags }} ~615'
+          if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then
+            TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")"
+          fi
+          PATH="$PWD/bld/lib:$PATH"
+          cmake --build bld --config '${{ matrix.type }}' --target test-ci
+
+      - name: 'cmake build examples'
+        if: ${{ matrix.build == 'cmake' }}
+        timeout-minutes: 5
+        run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples
+
   msys2:  # both msys and mingw-w64
     name: "${{ matrix.sys == 'msys' && 'msys2' || 'mingw' }}, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.env }} ${{ matrix.name }} ${{ matrix.test }}"
     runs-on: windows-latest