From d87eb59792d6b4b29c761612a17642d0f717f14c Mon Sep 17 00:00:00 2001 From: worthant Date: Fri, 24 Jul 2026 20:17:45 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20ci(release):=20publish=20resilie?= =?UTF-8?q?ntly=20=E2=80=94=20a=20failed=20backend=20no=20longer=20blocks?= =?UTF-8?q?=20the=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit publish-release had no if:always(), so one failed backend build (e.g. the new ROCm job) would skip publish entirely and ship NOTHING. Add if:always() gated on verify-version, publish whatever archives exist, and list any missing backends in the notes (mirrors publish-dev-latest). Also add the linux CUDA and ROCm rows to the notes table (CUDA was missing). --- .github/workflows/release-turboquant.yml | 36 ++++++++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-turboquant.yml b/.github/workflows/release-turboquant.yml index b9b5ec4563c7..272b27125720 100644 --- a/.github/workflows/release-turboquant.yml +++ b/.github/workflows/release-turboquant.yml @@ -544,6 +544,10 @@ jobs: # build job — if anything failed, no release is published at all. publish-release: needs: [verify-version, linux-x64-vulkan, linux-x64-cuda-13-3, linux-x64-rocm, windows-x64, macos-arm64] + # Publish even if some backend build failed, so one broken backend never + # blocks shipping the others (the notes call out what is missing). Still + # requires the version check to pass. + if: ${{ always() && needs.verify-version.result == 'success' }} runs-on: ubuntu-22.04 permissions: contents: write @@ -574,11 +578,15 @@ jobs: UPSTREAM_BASE="${VERSION%%-*}" ls -lh archives/ - gh release create "$TAG" \ - --target "${{ github.sha }}" \ - --title "TurboQuant ${VERSION}" \ - --latest \ - --notes "## TurboQuant KV Cache — ${VERSION} + # A build job may have failed (if: always() above). Publish whatever + # archives exist and call out anything missing in the notes. + EXPECTED="linux-x64-vulkan linux-x64-cuda-13.3 linux-x64-rocm windows-x64-cpu windows-x64-vulkan windows-x64-cuda-12.4 windows-x64-cuda-13.3 macos-arm64" + MISSING="" + for b in $EXPECTED; do + ls archives/ | grep -q "llama-turboquant-${b}\." || MISSING="$MISSING $b" + done + + NOTES="## TurboQuant KV Cache — ${VERSION} Built from \`master\` at commit \`${SHORT_SHA}\`, based on upstream llama.cpp \`${UPSTREAM_BASE}\`. @@ -590,12 +598,28 @@ jobs: | Backend | Asset | |---|---| | Linux x64 (Vulkan + portable CPU) | \`llama-turboquant-linux-x64-vulkan.tar.gz\` | + | Linux x64 CUDA 13.3 (+ portable CPU) | \`llama-turboquant-linux-x64-cuda-13.3.tar.gz\` | + | Linux x64 ROCm/HIP — AMD RDNA (+ portable CPU) | \`llama-turboquant-linux-x64-rocm.tar.gz\` | | Windows x64 CPU | \`llama-turboquant-windows-x64-cpu.zip\` | | Windows x64 Vulkan | \`llama-turboquant-windows-x64-vulkan.zip\` | | Windows x64 CUDA 12.4 | \`llama-turboquant-windows-x64-cuda-12.4.zip\` | | Windows x64 CUDA 13.3 | \`llama-turboquant-windows-x64-cuda-13.3.zip\` | | macOS ARM64 (Metal, signed + notarized) | \`llama-turboquant-macos-arm64.zip\` | + The ROCm archive targets AMD RDNA2–RDNA4 (gfx1030/1100/1101/1102/1151/1200/1201); GCN GPUs use the Vulkan build. + ### Versioning - \`-\`: \`${UPSTREAM_BASE}\` is the upstream llama.cpp build this fork is based on, \`${VERSION#*-}\` is the TurboQuant fork version. \`llama-server --version\` reports \`version: ${VERSION}\`." \ + \`-\`: \`${UPSTREAM_BASE}\` is the upstream llama.cpp build this fork is based on, \`${VERSION#*-}\` is the TurboQuant fork version. \`llama-server --version\` reports \`version: ${VERSION}\`." + + if [ -n "$MISSING" ]; then + NOTES="$NOTES + + ⚠️ **Missing backends in this build:**${MISSING} — see the failed jobs of run ${{ github.run_id }}." + fi + + gh release create "$TAG" \ + --target "${{ github.sha }}" \ + --title "TurboQuant ${VERSION}" \ + --latest \ + --notes "$NOTES" \ archives/*