ci : move most slim jobs to self-hosted runners (#23619)

* ci : remove tag from build-self-hosted.yml

* ci : slim -> self-hosted

* ci : prevent heavy CPU jobs from running on fast runners

* ci : prevent cmake pkg to run on dedicated fast runners

* ci : try to bump 3.11 -> 3.13

* ci : move lint back to 3.11

* ci : back to 3.11

* ci : add comment about UI jobs

* ci : move python requirements check to CPU runners

this job is a bit slow for a dedicated "fast" runner

* ci : add self-hosted ui workflow

* ci : fix UI naming

* tmp to check if arm64 fast is compatible with all jobs

* revert last commit
This commit is contained in:
Georgi Gerganov
2026-05-25 08:11:19 +03:00
committed by GitHub
parent 549b9d8433
commit 28123a3937
13 changed files with 140 additions and 74 deletions
+1 -6
View File
@@ -5,17 +5,12 @@ on:
jobs: jobs:
linux: linux:
runs-on: ubuntu-slim runs-on: [self-hosted, Linux, CPU]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y build-essential tcl cmake
- name: Build - name: Build
run: | run: |
PREFIX="$(pwd)"/inst PREFIX="$(pwd)"/inst
+4 -54
View File
@@ -55,24 +55,7 @@ env:
LLAMA_LOG_TIMESTAMPS: 1 LLAMA_LOG_TIMESTAMPS: 1
jobs: jobs:
determine-tag:
name: Determine tag name
runs-on: [self-hosted, fast]
outputs:
tag_name: ${{ steps.tag.outputs.name }}
steps:
- name: Clone
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Determine tag name
id: tag
uses: ./.github/actions/get-tag-name
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
ggml-ci-nvidia-cuda: ggml-ci-nvidia-cuda:
needs: determine-tag
runs-on: [self-hosted, Linux, NVIDIA] runs-on: [self-hosted, Linux, NVIDIA]
steps: steps:
@@ -82,14 +65,11 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
nvidia-smi nvidia-smi
GG_BUILD_CUDA=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp GG_BUILD_CUDA=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-nvidia-vulkan-cm: ggml-ci-nvidia-vulkan-cm:
needs: determine-tag
runs-on: [self-hosted, Linux, NVIDIA] runs-on: [self-hosted, Linux, NVIDIA]
steps: steps:
@@ -99,14 +79,11 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
vulkaninfo --summary vulkaninfo --summary
GG_BUILD_VULKAN=1 GGML_VK_DISABLE_COOPMAT2=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp GG_BUILD_VULKAN=1 GGML_VK_DISABLE_COOPMAT2=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-nvidia-vulkan-cm2: ggml-ci-nvidia-vulkan-cm2:
needs: determine-tag
runs-on: [self-hosted, Linux, NVIDIA, COOPMAT2] runs-on: [self-hosted, Linux, NVIDIA, COOPMAT2]
steps: steps:
@@ -116,14 +93,11 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
vulkaninfo --summary vulkaninfo --summary
GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-nvidia-webgpu: ggml-ci-nvidia-webgpu:
needs: determine-tag
runs-on: [self-hosted, Linux, NVIDIA, X64] runs-on: [self-hosted, Linux, NVIDIA, X64]
steps: steps:
@@ -154,7 +128,6 @@ jobs:
# TODO: provision AMX-compatible machine # TODO: provision AMX-compatible machine
#ggml-ci-cpu-amx: #ggml-ci-cpu-amx:
# needs: determine-tag
# runs-on: [self-hosted, Linux, CPU, AMX] # runs-on: [self-hosted, Linux, CPU, AMX]
# steps: # steps:
@@ -169,7 +142,6 @@ jobs:
# TODO: provision AMD GPU machine # TODO: provision AMD GPU machine
# ggml-ci-amd-vulkan: # ggml-ci-amd-vulkan:
# needs: determine-tag
# runs-on: [self-hosted, Linux, AMD] # runs-on: [self-hosted, Linux, AMD]
# steps: # steps:
@@ -185,7 +157,6 @@ jobs:
# TODO: provision AMD GPU machine # TODO: provision AMD GPU machine
# ggml-ci-amd-rocm: # ggml-ci-amd-rocm:
# needs: determine-tag
# runs-on: [self-hosted, Linux, AMD] # runs-on: [self-hosted, Linux, AMD]
# steps: # steps:
@@ -200,7 +171,6 @@ jobs:
# GG_BUILD_ROCM=1 GG_BUILD_AMDGPU_TARGETS="gfx1101" bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp # GG_BUILD_ROCM=1 GG_BUILD_AMDGPU_TARGETS="gfx1101" bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-mac-metal: ggml-ci-mac-metal:
needs: determine-tag
runs-on: [self-hosted, macOS, ARM64] runs-on: [self-hosted, macOS, ARM64]
steps: steps:
@@ -210,13 +180,10 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
GG_BUILD_METAL=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp GG_BUILD_METAL=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-mac-webgpu: ggml-ci-mac-webgpu:
needs: determine-tag
runs-on: [self-hosted, macOS, ARM64] runs-on: [self-hosted, macOS, ARM64]
steps: steps:
@@ -239,14 +206,11 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
GG_BUILD_WEBGPU=1 GG_BUILD_WEBGPU_DAWN_PREFIX="$GITHUB_WORKSPACE/dawn" \ GG_BUILD_WEBGPU=1 GG_BUILD_WEBGPU_DAWN_PREFIX="$GITHUB_WORKSPACE/dawn" \
bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-mac-vulkan: ggml-ci-mac-vulkan:
needs: determine-tag
runs-on: [self-hosted, macOS, ARM64] runs-on: [self-hosted, macOS, ARM64]
steps: steps:
@@ -256,14 +220,11 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
vulkaninfo --summary vulkaninfo --summary
GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-linux-intel-vulkan: ggml-ci-linux-intel-vulkan:
needs: determine-tag
runs-on: [self-hosted, Linux, Intel] runs-on: [self-hosted, Linux, Intel]
steps: steps:
@@ -275,14 +236,11 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
vulkaninfo --summary vulkaninfo --summary
GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-win-intel-vulkan: ggml-ci-win-intel-vulkan:
needs: determine-tag
runs-on: [self-hosted, Windows, X64, Intel] runs-on: [self-hosted, Windows, X64, Intel]
steps: steps:
@@ -297,7 +255,6 @@ jobs:
MSYSTEM: UCRT64 MSYSTEM: UCRT64
CHERE_INVOKING: 1 CHERE_INVOKING: 1
PATH: C:\msys64\ucrt64\bin;C:\msys64\usr\bin;C:\Windows\System32;${{ env.PATH }} PATH: C:\msys64\ucrt64\bin;C:\msys64\usr\bin;C:\Windows\System32;${{ env.PATH }}
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
vulkaninfo --summary vulkaninfo --summary
# Skip python related tests with GG_BUILD_LOW_PERF=1 since Windows MSYS2 UCRT64 currently fails to create # Skip python related tests with GG_BUILD_LOW_PERF=1 since Windows MSYS2 UCRT64 currently fails to create
@@ -305,7 +262,6 @@ jobs:
LLAMA_FATAL_WARNINGS=OFF GG_BUILD_NINJA=1 GG_BUILD_VULKAN=1 GG_BUILD_LOW_PERF=1 ./ci/run.sh ./results/llama.cpp ./mnt/llama.cpp LLAMA_FATAL_WARNINGS=OFF GG_BUILD_NINJA=1 GG_BUILD_VULKAN=1 GG_BUILD_LOW_PERF=1 ./ci/run.sh ./results/llama.cpp ./mnt/llama.cpp
ggml-ci-intel-openvino-gpu-low-perf: ggml-ci-intel-openvino-gpu-low-perf:
needs: determine-tag
runs-on: [self-hosted, Linux, Intel, OpenVINO] runs-on: [self-hosted, Linux, Intel, OpenVINO]
concurrency: concurrency:
@@ -337,15 +293,12 @@ jobs:
- name: Test - name: Test
id: ggml-ci id: ggml-ci
env:
HF_UI_VERSION: ${{ needs.determine-tag.outputs.tag_name }}
run: | run: |
source ./openvino_toolkit/setupvars.sh source ./openvino_toolkit/setupvars.sh
GG_BUILD_OPENVINO=1 GGML_OPENVINO_DEVICE=GPU GG_BUILD_LOW_PERF=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp GG_BUILD_OPENVINO=1 GGML_OPENVINO_DEVICE=GPU GG_BUILD_LOW_PERF=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-arm64-cpu-low-perf: ggml-ci-arm64-cpu-low-perf:
needs: determine-tag runs-on: [self-hosted, Linux, ARM64, CPU]
runs-on: [self-hosted, Linux, ARM64]
steps: steps:
- name: Clone - name: Clone
@@ -358,8 +311,7 @@ jobs:
LLAMA_ARG_THREADS=$(nproc) GG_BUILD_LOW_PERF=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp LLAMA_ARG_THREADS=$(nproc) GG_BUILD_LOW_PERF=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
ggml-ci-arm64-cpu-high-perf: ggml-ci-arm64-cpu-high-perf:
needs: determine-tag runs-on: [self-hosted, Linux, ARM64, CPU]
runs-on: [self-hosted, Linux, ARM64]
steps: steps:
- name: Clone - name: Clone
@@ -378,8 +330,7 @@ jobs:
# if we resolve this, we should be able to offload these jobs to the self-hosted runners # if we resolve this, we should be able to offload these jobs to the self-hosted runners
# #
# ggml-ci-arm64-cpu-high-perf-sve: # ggml-ci-arm64-cpu-high-perf-sve:
# needs: determine-tag # runs-on: [self-hosted, Linux, ARM64, CPU]
# runs-on: [self-hosted, Linux, NVIDIA, ARM64]
# #
# steps: # steps:
# - name: Clone # - name: Clone
@@ -392,8 +343,7 @@ jobs:
# LLAMA_ARG_THREADS=$(nproc) GG_BUILD_NO_BF16=1 GG_BUILD_EXTRA_TESTS_0=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp # LLAMA_ARG_THREADS=$(nproc) GG_BUILD_NO_BF16=1 GG_BUILD_EXTRA_TESTS_0=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
# #
# ggml-ci-arm64-cpu-kleidiai: # ggml-ci-arm64-cpu-kleidiai:
# needs: determine-tag # runs-on: [self-hosted, Linux, ARM64, CPU]
# runs-on: [self-hosted, Linux, NVIDIA, ARM64]
# #
# steps: # steps:
# - name: Clone # - name: Clone
+1 -1
View File
@@ -19,7 +19,7 @@ on:
jobs: jobs:
check-vendor: check-vendor:
runs-on: ubuntu-slim runs-on: [self-hosted, fast]
steps: steps:
- name: Checkout - name: Checkout
+1 -1
View File
@@ -15,7 +15,7 @@ concurrency:
jobs: jobs:
model-naming: model-naming:
runs-on: ubuntu-slim runs-on: [self-hosted, fast]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- name: Check model naming conventions - name: Check model naming conventions
+1 -1
View File
@@ -15,7 +15,7 @@ concurrency:
jobs: jobs:
editorconfig: editorconfig:
runs-on: ubuntu-slim runs-on: [self-hosted, fast]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: editorconfig-checker/action-editorconfig-checker@840e866d93b8e032123c23bac69dece044d4d84c # v2.2.0 - uses: editorconfig-checker/action-editorconfig-checker@840e866d93b8e032123c23bac69dece044d4d84c # v2.2.0
+1 -1
View File
@@ -12,7 +12,7 @@ on:
jobs: jobs:
pre-tokenizer-hashes: pre-tokenizer-hashes:
runs-on: ubuntu-slim runs-on: [self-hosted, fast]
steps: steps:
- name: Checkout repository - name: Checkout repository
@@ -20,7 +20,7 @@ concurrency:
jobs: jobs:
python-check-requirements: python-check-requirements:
runs-on: ubuntu-slim runs-on: [self-hosted, CPU, fast]
name: check-requirements name: check-requirements
steps: steps:
- name: Check out source repository - name: Check out source repository
+1 -1
View File
@@ -21,7 +21,7 @@ concurrency:
jobs: jobs:
flake8-lint: flake8-lint:
runs-on: ubuntu-slim runs-on: [self-hosted, fast]
name: Lint name: Lint
steps: steps:
- name: Check out source repository - name: Check out source repository
+1 -1
View File
@@ -22,7 +22,7 @@ concurrency:
jobs: jobs:
python-type-check: python-type-check:
runs-on: ubuntu-slim runs-on: [self-hosted, fast]
name: python type-check name: python type-check
steps: steps:
- name: Check out source repository - name: Check out source repository
+1 -2
View File
@@ -5,8 +5,7 @@ on:
jobs: jobs:
build: build:
name: Build static output runs-on: [self-hosted, fast]
runs-on: ubuntu-slim
env: env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }} BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
+118
View File
@@ -0,0 +1,118 @@
name: UI (self-hosted)
# these are the same as ui.yml, but with self-hosted runners
# the runners come with pre-installed Playwright browsers version: 1.56.1
# the jobs are much lighter because they don't need to install node and playwright browsers
on:
workflow_dispatch:
inputs:
sha:
description: 'Commit SHA1 to build'
required: false
type: string
push:
branches:
- master
paths: [
'.github/workflows/ui-self-hosted.yml',
'.github/workflows/ui-build.yml',
'tools/ui/**.*',
'tools/server/tests/**.*'
]
pull_request:
types: [opened, synchronize, reopened]
paths: [
'.github/workflows/ui-self-hosted.yml',
'.github/workflows/ui-build.yml',
'tools/ui/**.*',
'tools/server/tests/**.*'
]
env:
LLAMA_LOG_COLORS: 1
LLAMA_LOG_PREFIX: 1
LLAMA_LOG_TIMESTAMPS: 1
LLAMA_LOG_VERBOSITY: 10
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
ui-build:
name: Build static output
uses: ./.github/workflows/ui-build.yml
ui-checks:
name: Checks
needs: ui-build
runs-on: [self-hosted, PLAYWRIGHT]
continue-on-error: true
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.inputs.sha || github.event.pull_request.head.sha || github.sha || github.head_ref || github.ref_name }}
- name: Install dependencies
id: setup
run: npm ci
working-directory: tools/ui
- name: Run type checking
if: ${{ always() && steps.setup.conclusion == 'success' }}
run: npm run check
working-directory: tools/ui
- name: Run linting
if: ${{ always() && steps.setup.conclusion == 'success' }}
run: npm run lint
working-directory: tools/ui
- name: Run Client tests
if: ${{ always() }}
run: npm run test:client
working-directory: tools/ui
- name: Run Unit tests
if: ${{ always() }}
run: npm run test:unit
working-directory: tools/ui
e2e-tests:
name: E2E Tests
needs: ui-build
runs-on: [self-hosted, PLAYWRIGHT]
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.inputs.sha || github.event.pull_request.head.sha || github.sha || github.head_ref || github.ref_name }}
- name: Install dependencies
id: setup
run: npm ci
working-directory: tools/ui
- name: Build application
if: ${{ always() && steps.setup.conclusion == 'success' }}
run: npm run build
working-directory: tools/ui
- name: Build Storybook
if: ${{ always() }}
run: npm run build-storybook
working-directory: tools/ui
- name: Run UI tests
if: ${{ always() }}
run: npm run test:ui -- --testTimeout=60000
working-directory: tools/ui
- name: Run E2E tests
if: ${{ always() }}
run: npm run test:e2e
working-directory: tools/ui
@@ -1,4 +1,4 @@
name: CI (UI) name: UI
on: on:
workflow_dispatch: workflow_dispatch:
@@ -11,14 +11,16 @@ on:
branches: branches:
- master - master
paths: [ paths: [
'.github/workflows/ui-ci.yml', '.github/workflows/ui.yml',
'.github/workflows/ui-build.yml',
'tools/ui/**.*', 'tools/ui/**.*',
'tools/server/tests/**.*' 'tools/server/tests/**.*'
] ]
pull_request: pull_request:
types: [opened, synchronize, reopened] types: [opened, synchronize, reopened]
paths: [ paths: [
'.github/workflows/ui-ci.yml', '.github/workflows/ui.yml',
'.github/workflows/ui-build.yml',
'tools/ui/**.*', 'tools/ui/**.*',
'tools/server/tests/**.*' 'tools/server/tests/**.*'
] ]
@@ -39,7 +41,7 @@ jobs:
uses: ./.github/workflows/ui-build.yml uses: ./.github/workflows/ui-build.yml
ui-checks: ui-checks:
name: UI Checks name: Checks
needs: ui-build needs: ui-build
runs-on: ubuntu-latest runs-on: ubuntu-latest
continue-on-error: true continue-on-error: true
+3 -1
View File
@@ -3,18 +3,20 @@ name: Update Operations Documentation
on: on:
push: push:
paths: paths:
- '.github/workflows/update-ops-docs.yml'
- 'docs/ops.md' - 'docs/ops.md'
- 'docs/ops/**' - 'docs/ops/**'
- 'scripts/create_ops_docs.py' - 'scripts/create_ops_docs.py'
pull_request: pull_request:
paths: paths:
- '.github/workflows/update-ops-docs.yml'
- 'docs/ops.md' - 'docs/ops.md'
- 'docs/ops/**' - 'docs/ops/**'
- 'scripts/create_ops_docs.py' - 'scripts/create_ops_docs.py'
jobs: jobs:
update-ops-docs: update-ops-docs:
runs-on: ubuntu-slim runs-on: [self-hosted, fast, ARM64]
steps: steps:
- name: Checkout repository - name: Checkout repository