From cb428be28ed9534af5175e16e6b4d0e679c689b9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 6 May 2026 18:57:01 +0000 Subject: [PATCH] ci(desktop): wrap desktop build in retry to survive vlcDownload flakes The Windows leg of the Test/Build workflow has been intermittently failing with SocketTimeoutException inside :desktopApp:vlcDownload, even after the in-build retry budget (retries(4) + 5min readTimeout in desktopApp/build.gradle.kts) and the actions/cache of ~/.gradle/vlcSetup. When get.videolan.org is unreachable for long enough to exhaust the inner retries, the whole job dies on a cache miss. Wrap the Test+Build step in nick-fields/retry@v4 (max_attempts: 2, timeout_minutes: 45) so one outer retry can ride out a sustained videolan.org outage. This mirrors the proven pattern already used in create-release.yml for the release artifact build. --- .github/workflows/build.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a60dea996..045d7e9ec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -94,8 +94,19 @@ jobs: restore-keys: | vlcsetup-${{ runner.os }}- + # Wrap the Gradle invocation in nick-fields/retry so a transient + # SocketTimeoutException inside vlcDownload / upxDownload (the de.undercouch + # Download tasks talking to get.videolan.org) doesn't sink the whole job. + # The in-build retry budget (retries(4) + 5min readTimeout in + # desktopApp/build.gradle.kts) handles short blips inside one task; this + # outer retry handles the case where get.videolan.org is unreachable for + # long enough to exhaust that budget — matches the release workflow. - name: Test + Build Desktop (gradle) - run: ./gradlew :quartz:jvmTest :commons:jvmTest :nestsClient:jvmTest :cli:test :desktopApp:test :desktopApp:${{ matrix.desktop-task }} + uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0 + with: + max_attempts: 2 + timeout_minutes: 45 + command: ./gradlew :quartz:jvmTest :commons:jvmTest :nestsClient:jvmTest :cli:test :desktopApp:test :desktopApp:${{ matrix.desktop-task }} # jpackage pins libicu to the build host's version (libicu74 on # ubuntu-24.04). Rewrite the .deb so testers on other Debian/Ubuntu