curl/.github/workflows
Viktor Szakats 0455d8772a
GHA: minimize installed packages in http3-linux and Windows cross-builds
In the last couple of months some jobs started taking a lot of time and
often timing out due to slow `apt install` from the Azure Ubuntu mirror.

The jobs affected were those that installed large packages:
GHA/http3-linux and the 3 cross-build jobs in GHA/windows.

This patch reduces the installed packaged to the minimum required
to complete the jobs. Saving a minute+ for each http3-linux job (a total
of 20+ minutes for the workflow.) Also saving bandwidth and reducing
the chance for long downloads or timeouts with slow Azure repos.

Details:
- http3: delete redundant packages from the `build-cache` job.
- http3: install gnutls dependencies for gnutls jobs only.
- http3: do not install test dependencies in jobs not running tests.
- http3: drop redundant packages from the curl jobs.
- Windows-cross: replace `mingw-w64` with `gcc-mingw-w64-x86-64-win32`
  for the 3 Windows cross-build job. Dropping C++, 32-bit, and 64-bit
  POSIX-threaded parts. Saving time and significant bandwidth for each
  of the 3 jobs:
  Download size: 277 MB -> 65 MB (installed: 1300 MB -> 400 MB)
- Windows-cross: restore previous job time limit of 15m (from 45m)
  Follow-up to ff5140a25f #18163

Before:
https://github.com/curl/curl/actions/runs/17611514207 (http3)
https://github.com/curl/curl/actions/runs/17611514185/job/50034354923 (Windows cross)

After:
https://github.com/curl/curl/actions/runs/17628406362?pr=18509 (http3)
https://github.com/curl/curl/actions/runs/17627562551/job/50088055529?pr=18509 (Windows cross)

http3 job           |    Bef. |    Aft. |
:------------------ | ------: | ------: |
Build caches (hot)  |     10s |     12s |
AM awslc            |  3m  0s |  1m 54s |
CM awslc            |  4m 32s |  3m  4s |
AM boringssl        |  3m  9s |  1m 48s |
CM boringssl        |  3m 43s |  3m  2s |
AM gnutls           |  3m  9s |  2m 18s |
CM gnutls           |  4m 19s |  2m 55s |
AM libressl         |  2m 14s |  1m 24s |
CM libressl         |  5m 30s |  2m 57s |
AM openssl          |  5m 16s |  4m 17s |
CM openssl          |  1m 50s |  1m 47s |
AM openssl-quic     |  2m 58s |  1m  7s |
CM openssl-quic     |  4m 16s |  2m 43s |
AM quiche           |  2m 54s |  1m 34s |
CM quiche           |  5m  0s |  3m 15s |
AM quictls          |  2m 34s |  1m 13s |
CM quictls          |  4m 20s |  3m 17s |
AM wolfssl          |  2m 48s |  1m 30s |
CM wolfssl          |  4m 49s |  3m 22s |
Total:              | 66m 21s | 43m 27s |
Gain:               |         | 22m 54s |

Out of curiousity, build times as seen in the http3 build-cache job:
- TLS backends:
  - openssl: 2m25s
  - libressl: 27s
  - aws-lc: 41s
  - boringssl: 1m8s
  - quictls: 1m46s
  - gnutls: 6m30s
  - wolfssl: 51s
  - quiche + boringssl: 1m9s
- ng* libs (not yet optimized for build speed):
  - nghttp3: 13s
  - ngtcp2: 52s (with 6 backends, 3 runs)
  - ngtcp2: 19s (boringssl)
  - nghttp2: 21s
Ref: https://github.com/curl/curl/actions/runs/17626120054/job/50083344805

A similar effort in curl-for-win, affecting 2 GHA/curl-for-win Windows
jobs (though they use the default Debian repo, with no issues):
- with llvm/clang:
  Download size: 648 MB -> 430 MB (installed: 3344 MB -> 2333 MB)
- with gcc:
  Download size: 550 MB -> 328 MB (installed: 2815 MB -> 1804 MB)
Ref: e19665d948
Ref: 6b14c3946a

Bug: https://github.com/curl/curl/pull/18502#issuecomment-3270259744

Closes #18509
2025-09-11 03:07:19 +02:00
..
appveyor-status.yml GHA: fix zizmor 1.10.0 warnings, update names 2025-06-30 18:38:56 +02:00
checkdocs.yml GHA: update actions/checkout action to v5 2025-08-12 11:17:08 +02:00
checksrc.yml GHA: update actions/checkout action to v5 2025-08-12 11:17:08 +02:00
codeql.yml GHA: update github/codeql-action digest to d3678e2 2025-09-09 23:47:41 +02:00
configure-vs-cmake.yml GHA: update actions/checkout action to v5 2025-08-12 11:17:08 +02:00
curl-for-win.yml GHA/curl-for-win: drop x86, fix zlib-classic, switch back to libssh 2025-08-26 11:59:23 +02:00
distcheck.yml GHA/windows: update msys2/setup-msys2 digest to fb197b7 2025-08-31 11:28:10 +02:00
fuzz.yml CI: skip CI builds that just touch Dockerfile 2025-07-02 18:28:24 -07:00
hacktoberfest-accepted.yml GHA: update actions/checkout action to v5 2025-08-12 11:17:08 +02:00
http3-linux.yml GHA: minimize installed packages in http3-linux and Windows cross-builds 2025-09-11 03:07:19 +02:00
label.yml gha: Update actions/labeler action to v6 2025-09-04 13:03:47 -07:00
linux-old.yml gnutls: fix building with older supported GnuTLS versions 2025-08-21 18:04:25 +02:00
linux.yml GHA/linux: run on .md file changes 2025-09-07 22:21:04 +02:00
macos.yml GHA: update actions/checkout action to v5 2025-08-12 11:17:08 +02:00
non-native.yml GHA/non-native: drop MS-DOS jobs, requires OpenSSL 1.0.2 2025-08-21 16:58:55 +02:00
windows.yml GHA: minimize installed packages in http3-linux and Windows cross-builds 2025-09-11 03:07:19 +02:00