mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2026-05-14 13:04:08 +00:00
* ci: add workflow to publish webui to Hugging Face bucket * ci: add webui release job to release workflow * ci: test webui release job * chore: Return to default minification strategy for build output files * ci: extract webui build into separate workflow and job * chore: Ignore webui static output + clean up references * chore: Delete legacy webui static output * chore: Ignore webui build static output * fix: Workflow * fix: Versioning naming * chore: Update package name * test: Test CI fix * refactor: Naming * server: implement webui build strategy with HF Bucket support * chore: Remove test workflow * chore: Use WebUI build workflow call in other workflows * server: HF Buckets fallback for WebUI build * refactor: App name variable * refactor: Naming * fix: Retrieve loading.html * fix: workflow syntax * fix: Rewrite malformed release.yml * fix: Req param * test: Re-add missing Playwright installation for CI tests * refactor: Logic & security improvements * refactor: Retrieve publishing jobs and DRY the workflows * fix: Test workflow syntax * fix: Upstream Release Tag for test workflow * chore: Remove test workflow * ci: Run WebUI jobs on `ubuntu-24.04-arm` * refactor: Post-CR cleanup Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com> Co-authored-by: Aleksander Grygier <aleksander.grygier@gmail.com> * refactor: CI cleanup * refactor: Cleanup * test: Test workflow * refactor: use LLAMA_BUILD_NUMBER instead of LLAMA_BUILD_TAG for HF Bucket webui downloads * server: add fallback mechanism for HF Bucket webui downloads from latest directory * fix: Incorrect argument order in file(SHA256) calls for checksum verification * refactor: Use cmake script for handling the HF Bucket download on build time * feat: support local npm build for WebUI assets * refactor: add `HF_ENABLED` flag to control WebUI build/download provisioning * refactor: Cleanup * chore: Remove test workflow * fix: remove s390x from release workflow * fix: add webui-build dependency to ubuntu-22-rocm and windows-hip * Revert "fix: remove s390x from release workflow" This reverts commit debcfffa9bc1e3112eae41f2d29741b682e4eb19. * fix: Release workflow file * fix: Proper release tag used for HF Bucket upload * fix: Remove duplicate steps in release workflow --------- Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
143 lines
4.1 KiB
YAML
143 lines
4.1 KiB
YAML
name: Server WebUI
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
sha:
|
|
description: 'Commit SHA1 to build'
|
|
required: false
|
|
type: string
|
|
push:
|
|
branches:
|
|
- master
|
|
paths: [
|
|
'.github/workflows/server-webui.yml',
|
|
'tools/server/webui/**.*',
|
|
'tools/server/tests/**.*'
|
|
]
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
paths: [
|
|
'.github/workflows/server-webui.yml',
|
|
'tools/server/webui/**.*',
|
|
'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:
|
|
webui-build:
|
|
name: Build WebUI
|
|
uses: ./.github/workflows/webui-build.yml
|
|
|
|
webui-checks:
|
|
name: WebUI Checks
|
|
needs: webui-build
|
|
runs-on: ubuntu-24.04-arm
|
|
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/server/webui/package-lock.json"
|
|
|
|
- name: Install dependencies
|
|
id: setup
|
|
if: ${{ steps.node.conclusion == 'success' }}
|
|
run: npm ci
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Run type checking
|
|
if: ${{ always() && steps.setup.conclusion == 'success' }}
|
|
run: npm run check
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Run linting
|
|
if: ${{ always() && steps.setup.conclusion == 'success' }}
|
|
run: npm run lint
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Install Playwright browsers
|
|
id: playwright
|
|
if: ${{ always() && steps.setup.conclusion == 'success' }}
|
|
run: npx playwright install --with-deps
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Run Client tests
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:client
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Run Unit tests
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:unit
|
|
working-directory: tools/server/webui
|
|
|
|
e2e-tests:
|
|
name: E2E Tests
|
|
needs: webui-build
|
|
runs-on: ubuntu-24.04-arm
|
|
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/server/webui/package-lock.json"
|
|
|
|
- name: Install dependencies
|
|
id: setup
|
|
if: ${{ steps.node.conclusion == 'success' }}
|
|
run: npm ci
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Build application
|
|
if: ${{ always() && steps.setup.conclusion == 'success' }}
|
|
run: npm run build
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Install Playwright browsers
|
|
id: playwright
|
|
if: ${{ always() && steps.setup.conclusion == 'success' }}
|
|
run: npx playwright install --with-deps
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Build Storybook
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run build-storybook
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Run UI tests
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:ui -- --testTimeout=60000
|
|
working-directory: tools/server/webui
|
|
|
|
- name: Run E2E tests
|
|
if: ${{ always() && steps.playwright.conclusion == 'success' }}
|
|
run: npm run test:e2e
|
|
working-directory: tools/server/webui
|