Skip to content

CI audit: 11 self-hosted workflows queue forever on this fork #84

@marksverdhei

Description

@marksverdhei

Findings (epoch #81 CI audit round 2)

11 workflows in `.github/workflows/` target `runs-on: [self-hosted, ...]` and fire on `pull_request` / `push`, but the named runner labels don't exist in this fork's runner pool. The runs land in QUEUED state and never complete.

Workflow Runner label PR-trigger paths Frequency
python-lint.yml `[self-hosted, fast]` `**/*.py` high
python-type-check.yml `[self-hosted, fast]` `**/*.py` high
editorconfig.yml `[self-hosted, fast]` (branches: master) low
code-style.yml `[self-hosted, fast]` (need to check) mid
python-check-requirements.yml `[self-hosted, CPU, fast]` requirements/** low
check-vendor.yml `[self-hosted, fast]` vendor/** low
pre-tokenizer-hashes.yml `[self-hosted, fast]` conversion/base.py + 1 very low
update-ops-docs.yml `[self-hosted, fast, ARM64]` docs/ops/** very low
build-openvino.yml `[self-hosted, Linux, Intel, OpenVINO]` ggml/src/ggml-openvino/** low
build-self-hosted.yml `[self-hosted, Linux, NVIDIA]` CMakeLists, .h, .c, .cpp high
server-self-hosted.yml `[self-hosted, llama-server, macOS, ARM64]` tools/server/** high
ui-self-hosted.yml `[self-hosted, PLAYWRIGHT]` tools/ui/, tools/server/tests/ mid

`gh run list --status queued` confirms recent PRs all carry one or more of these as perpetually-pending checks. Cosmetic on the PR status panel; never breaks merges (queued != failed) but contributes to "UNSTABLE" mergeStateStatus on every PR.

Options (each could apply per-workflow)

A. Drop auto-triggers, keep workflow_dispatch. Same pattern as PR #74 (build-sycl) and PR #80 (build-cann). Quick and reversible. Loses CI coverage entirely until runners are provisioned.

B. Convert to `ubuntu-latest`. Works trivially for the lint workflows (flake8, editorconfig, type-check, requirements-check). Restores actual coverage. Costs github-hosted minutes. NOT viable for OpenVINO/NVIDIA/Playwright/ARM64-specific jobs.

C. Provision the runners. Out of my scope. Probably the right answer for the heavy ones (NVIDIA, OpenVINO) eventually.

Recommended split

Awaiting Markus's call on which path to take per workflow. Will implement once direction is set.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions