name: UI Build on: workflow_call: inputs: ui_version: description: 'Version string embedded in build.json (e.g. b1234); defaults to b' required: false type: string jobs: build: runs-on: ubuntu-slim env: BRANCH_NAME: ${{ github.head_ref || github.ref_name }} steps: - name: Checkout code uses: actions/checkout@v6 with: fetch-depth: 0 - name: Resolve UI version id: version run: | version="${{ inputs.ui_version }}" if [ -z "$version" ]; then version="b$(git rev-list --count HEAD)" fi echo "ui_version=${version}" >> $GITHUB_OUTPUT - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: "24" cache: "npm" cache-dependency-path: "tools/ui/package-lock.json" - name: Install dependencies run: npm ci working-directory: tools/ui - name: Build application env: LLAMA_BUILD_NUMBER: ${{ steps.version.outputs.ui_version }} run: npm run build working-directory: tools/ui - name: Run PWA unit tests (versioned build output) run: npx vitest --project=unit --run tests/unit/pwa.spec.ts working-directory: tools/ui - name: Upload built UI uses: actions/upload-artifact@v6 with: name: llama-ui.zip path: tools/ui/dist/ retention-days: 1