mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2026-08-31 09:31:24 +02:00
4d19b28769
* ci : inline UI version resolution into ui-build.yml * ci : build UI once and reuse the artifact in release jobs Server jobs now extract the ui-build artifact into tools/ui/dist instead of npm-building the UI. Also removes the get-version job and the no-op -DHF_UI_VERSION flags. Assisted-by: pi:Kimi-K3 * ui : disable the npm UI build by default (LLAMA_BUILD_UI=OFF) The flag now only controls building the UI from source via npm. The UI is still embedded by default from local tools/ui/dist or the prebuilt download (LLAMA_USE_PREBUILT_UI=ON). CI jobs no longer npm-build the UI; server-sanitize does not need node anymore. Assisted-by: pi:Kimi-K3 * ci : rename the ui-build artifact to llama-ui.zip Consistent with the other artifact names in the Actions summary. Assisted-by: pi:Kimi-K3 * ci : clarify the windows artifact merge in release.yml The windows-cuda/vulkan/sycl jobs build only the backend library; llama-server (with the embedded UI) is injected into their zips from the windows-cpu package during the release. State this in the job comments and use accurate wording in the merge step. Assisted-by: pi:Kimi-K3
152 lines
4.2 KiB
YAML
152 lines
4.2 KiB
YAML
name: UI
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
sha:
|
|
description: 'Commit SHA1 to build'
|
|
required: false
|
|
type: string
|
|
push:
|
|
branches:
|
|
- master
|
|
paths: [
|
|
'.github/workflows/ui.yml',
|
|
'.github/workflows/ui-build.yml',
|
|
'tools/ui/**.*',
|
|
'tools/server/tests/**.*'
|
|
]
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
paths: [
|
|
'.github/workflows/ui.yml',
|
|
'.github/workflows/ui-build.yml',
|
|
'tools/ui/**.*',
|
|
'tools/server/tests/**.*'
|
|
]
|
|
|
|
env:
|
|
LLAMA_ARG_LOG_COLORS: 1
|
|
LLAMA_ARG_LOG_PREFIX: 1
|
|
LLAMA_ARG_LOG_TIMESTAMPS: 1
|
|
LLAMA_ARG_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: ubuntu-24.04
|
|
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: Setup Node.js
|
|
id: node
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: "24"
|
|
cache: "npm"
|
|
cache-dependency-path: "tools/ui/package-lock.json"
|
|
|
|
- name: Download built UI artifacts
|
|
uses: actions/download-artifact@v6
|
|
with:
|
|
name: llama-ui.zip
|
|
path: tools/ui/dist/
|
|
|
|
- name: Install dependencies
|
|
id: setup
|
|
if: ${{ steps.node.conclusion == 'success' }}
|
|
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: Install Playwright browsers
|
|
id: playwright
|
|
if: ${{ always() && steps.setup.conclusion == 'success' }}
|
|
run: npx playwright install --with-deps
|
|
working-directory: tools/ui
|
|
|
|
- name: Run Client tests
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:client
|
|
working-directory: tools/ui
|
|
|
|
- name: Run Unit tests (uses pre-built dist/ from ui-build)
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:unit
|
|
working-directory: tools/ui
|
|
|
|
e2e-tests:
|
|
name: E2E Tests
|
|
needs: ui-build
|
|
runs-on: ubuntu-24.04
|
|
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: Setup Node.js
|
|
id: node
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: "24"
|
|
cache: "npm"
|
|
cache-dependency-path: "tools/ui/package-lock.json"
|
|
|
|
- name: Install dependencies
|
|
id: setup
|
|
if: ${{ steps.node.conclusion == 'success' }}
|
|
run: npm ci
|
|
working-directory: tools/ui
|
|
|
|
- name: Download built UI artifacts (reuses ui-build)
|
|
uses: actions/download-artifact@v6
|
|
with:
|
|
name: llama-ui.zip
|
|
path: tools/ui/dist/
|
|
|
|
- name: Install Playwright browsers
|
|
id: playwright
|
|
if: ${{ always() && steps.setup.conclusion == 'success' }}
|
|
run: npx playwright install --with-deps
|
|
working-directory: tools/ui
|
|
|
|
- name: Build Storybook
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run build-storybook
|
|
working-directory: tools/ui
|
|
|
|
- name: Run UI tests
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:ui -- --testTimeout=60000
|
|
working-directory: tools/ui
|
|
|
|
- name: Run E2E tests (uses pre-built dist/ from ui-build)
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:e2e
|
|
working-directory: tools/ui
|