From e56969a75133995e761b78dae332dcdef1be6a8c Mon Sep 17 00:00:00 2001 From: Shaw Date: Tue, 19 May 2026 01:29:49 -0700 Subject: [PATCH] ci: gate self-hosted-only workflows behind manual trigger MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The elizaOS org has zero self-hosted runners registered (`gh api repos/elizaOS/llama.cpp/actions/runners` → total_count: 0), so any job pinned to self-hosted labels stays queued forever and fails to deliver a CI signal. Two workflows still relied on self-hosted runners on every push/PR: - `CI (self-hosted)` (build-self-hosted.yml) — 10 jobs across [self-hosted, Linux, NVIDIA / COOPMAT2], [self-hosted, macOS, ARM64], [self-hosted, Linux, Intel], [self-hosted, Windows, X64, Intel], [self-hosted, Linux, Intel, OpenVINO]. Restrict the whole workflow to `workflow_dispatch` only. Re-enable push/PR once a fleet exists. - `CI (openvino)` (build-openvino.yml) — the GPU matrix variant targets [self-hosted, Linux, Intel, OpenVINO]. Gate that variant behind a new `force_self_hosted` workflow_dispatch input; the CPU variant on ubuntu-24.04 still runs on every push/PR. Same approach as PR #18 used for cuda-runtime-validation. --- .github/workflows/build-openvino.yml | 12 ++++++ .github/workflows/build-self-hosted.yml | 50 ++++--------------------- 2 files changed, 20 insertions(+), 42 deletions(-) diff --git a/.github/workflows/build-openvino.yml b/.github/workflows/build-openvino.yml index a5ed167fa..571db993c 100644 --- a/.github/workflows/build-openvino.yml +++ b/.github/workflows/build-openvino.yml @@ -2,6 +2,12 @@ name: CI (openvino) on: workflow_dispatch: # allows manual triggering + inputs: + force_self_hosted: + description: 'Also run the GPU matrix variant on the self-hosted Intel OpenVINO runner' + required: false + type: boolean + default: false push: branches: - master @@ -39,6 +45,12 @@ jobs: ubuntu-24-openvino: name: ubuntu-24-openvino-${{ matrix.openvino_device }} + # The GPU variant targets [self-hosted, Linux, Intel, OpenVINO], which is + # not currently registered in the elizaOS org — every push/PR left it + # queued indefinitely. Skip it on automatic triggers; surface it only + # when explicitly opted in via `workflow_dispatch -f force_self_hosted=true`. + if: ${{ matrix.variant != 'gpu' || (github.event_name == 'workflow_dispatch' && inputs.force_self_hosted) }} + concurrency: group: openvino-${{ matrix.variant }}-${{ github.head_ref || github.ref }} cancel-in-progress: false diff --git a/.github/workflows/build-self-hosted.yml b/.github/workflows/build-self-hosted.yml index fd6d2a06e..0b0747e4a 100644 --- a/.github/workflows/build-self-hosted.yml +++ b/.github/workflows/build-self-hosted.yml @@ -1,49 +1,15 @@ name: CI (self-hosted) +# This workflow targets self-hosted runners with labels like +# [self-hosted, Linux, NVIDIA], [self-hosted, macOS, ARM64], etc. The +# elizaOS org currently has zero self-hosted runners registered +# (`gh api repos/elizaOS/llama.cpp/actions/runners` → total_count: 0), +# so every push and PR left these jobs queued indefinitely. Restrict +# the trigger to workflow_dispatch only — manual triggers will surface +# the missing-runner state immediately instead of silently hanging. +# Re-enable push/pull_request once a self-hosted fleet exists. on: workflow_dispatch: # allows manual triggering - push: - branches: - - master - - main - - 'eliza/**' - paths: [ - '.github/workflows/build.yml', - '**/CMakeLists.txt', - '**/.cmake', - '**/*.h', - '**/*.hpp', - '**/*.c', - '**/*.cpp', - '**/*.cu', - '**/*.cuh', - '**/*.swift', - '**/*.m', - '**/*.metal', - '**/*.comp', - '**/*.glsl', - '**/*.wgsl' - ] - - pull_request: - types: [opened, synchronize, reopened] - paths: [ - '.github/workflows/build-self-hosted.yml', - '**/CMakeLists.txt', - '**/.cmake', - '**/*.h', - '**/*.hpp', - '**/*.c', - '**/*.cpp', - '**/*.cu', - '**/*.cuh', - '**/*.swift', - '**/*.m', - '**/*.metal', - '**/*.comp', - '**/*.glsl', - '**/*.wgsl' - ] concurrency: group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}