From e677a6511b8ead5d73206b2feade5fbf0717a8fd Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 13 Oct 2026 10:02:23 +0200 Subject: [PATCH] ci(workflows): retry the DragonFlyBSD VM step on transient boot flakes The DragonFlyBSD lane runs the vmactions VM step exactly once. When the VM fails to boot/provision transiently ("ssh: Could not resolve hostname dragonflybsd"), the lane is red and nothing retries it. Add a 3-attempt retry with continue-on-error on attempts 1-2; each attempt uses its own guest name so a leftover domain from a failed boot does not collide with the next attempt. The retry `if:` uses !cancelled() instead of the implicit success() status function - after attempt 1 fails, success() is false and would silently skip the later attempts. Signed-off-by: Enrico Weigelt, metux IT consult --- .github/workflows/build-xserver.yml | 36 +++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-xserver.yml b/.github/workflows/build-xserver.yml index 1c2f1a36cf..630ec35241 100644 --- a/.github/workflows/build-xserver.yml +++ b/.github/workflows/build-xserver.yml @@ -338,13 +338,45 @@ jobs: steps: - uses: actions/checkout@v6 - uses: ./.github/actions/ubuntu-pkg-cache - - name: run in DragonFlyBSD VM - id: xserver-build + # VM boot / image provisioning flakes transiently (SSH hostname not + # resolvable). Retry the whole VM step up to 3x; each attempt uses its + # own guest name so a leftover domain from a failed boot does not + # collide with the next attempt ("Guest name ... is already in use"). + # The retry `if:` must NOT rely on the implicit success() status + # function - after attempt 1 fails (continue-on-error) that is false + # and silently skips the later attempts. Use !cancelled(). + - name: run in DragonFlyBSD VM (attempt 1) + id: dfly-1 + continue-on-error: true + uses: vmactions/dragonflybsd-vm@v1.1.4 + with: + envs: 'MESON_ARGS' + usesh: true + release: "6.4.2" + guest: dragonflybsd-1 + run: ./.github/scripts/DragonFlyBSD/run-xserver-build.sh + + - name: run in DragonFlyBSD VM (attempt 2) + id: dfly-2 + if: ${{ !cancelled() && steps.dfly-1.outcome == 'failure' }} + continue-on-error: true + uses: vmactions/dragonflybsd-vm@v1.1.4 + with: + envs: 'MESON_ARGS' + usesh: true + release: "6.4.2" + guest: dragonflybsd-2 + run: ./.github/scripts/DragonFlyBSD/run-xserver-build.sh + + - name: run in DragonFlyBSD VM (attempt 3) + id: dfly-3 + if: ${{ !cancelled() && steps.dfly-1.outcome == 'failure' && steps.dfly-2.outcome == 'failure' }} uses: vmactions/dragonflybsd-vm@v1.1.4 with: envs: 'MESON_ARGS' usesh: true release: "6.4.2" + guest: dragonflybsd-3 run: ./.github/scripts/DragonFlyBSD/run-xserver-build.sh xserver-build-netbsd: