name: UI Publish on: workflow_call: inputs: version_tag: description: 'Version tag to publish under (e.g., b1234)' required: true type: string secrets: hf_token: description: 'Hugging Face token with write access' required: true jobs: build: name: Build static output uses: ./.github/workflows/ui-build.yml publish: name: Publish UI Static Output needs: build runs-on: ubuntu-slim permissions: contents: read env: HF_BUCKET_NAME: ${{ vars.HF_BUCKET_UI_STATIC_OUTPUT }} steps: - name: Checkout code uses: actions/checkout@v6 with: fetch-depth: 1 - name: Download UI build artifact uses: actions/download-artifact@v7 with: name: ui-build path: tools/ui/dist/ - name: Install Hugging Face Hub CLI run: pip install -U huggingface_hub - name: Authenticate with Hugging Face run: hf auth login --token ${{ secrets.hf_token }} - name: Sync built files to Hugging Face bucket (version tag) run: | # Upload the built files to the Hugging Face bucket under the release version hf buckets sync tools/ui/dist hf://buckets/ggml-org/${{ env.HF_BUCKET_NAME }}/${{ inputs.version_tag }} --delete --quiet - name: Sync built files to Hugging Face bucket (latest) run: | # Also upload to the 'latest' directory for fallback downloads hf buckets sync tools/ui/dist hf://buckets/ggml-org/${{ env.HF_BUCKET_NAME }}/latest --delete --quiet - name: Verify upload run: | # List the files in the bucket to verify the upload hf buckets list hf://buckets/ggml-org/${{ env.HF_BUCKET_NAME }}/${{ inputs.version_tag }} -R -h - name: Clean up root-level files run: | # Clean up any old root-level files from previous non-versioned deployments hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/index.html --yes 2>/dev/null || true hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/bundle.js --yes 2>/dev/null || true hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/bundle.css --yes 2>/dev/null || true hf buckets rm ggml-org/${{ env.HF_BUCKET_NAME }}/loading.html --yes 2>/dev/null || true