mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-04-05 18:36:58 +00:00
* ci : add github pages workflow for wasm examples This commit adds a github workflow to build and deploy the wasm examples to github pages. The whisper.wasm example is deployed as the main page. This workflow is trigged by a push to master and will deploy the examples to: https://ggerganov.github.io/whisper.cpp/. This requires that the repository has enabled github actions in `Settings` -> `Pages` -> `Build and deployment` -> `Source` be set to `GitHub Actions`. One thing to note is that this commit removes the `talk` example as I'm not sure how this example is built yet. Refs: https://github.com/ggerganov/whisper.cpp/issues/2784
92 lines
2.5 KiB
YAML
92 lines
2.5 KiB
YAML
name: Examples WASM
|
|
on:
|
|
push:
|
|
branches: ["master"]
|
|
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
pages: write
|
|
id-token: write
|
|
|
|
concurrency:
|
|
group: "pages"
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
deploy-wasm-github-pages:
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Pages
|
|
uses: actions/configure-pages@v4
|
|
|
|
- name: Setup emsdk
|
|
uses: mymindstorm/setup-emsdk@v14
|
|
|
|
- name: Build WASM Examples
|
|
# Enable for real build later in whisper.cpp
|
|
run: |
|
|
mkdir -p build-em && cd build-em
|
|
emcmake cmake .. -DCMAKE_BUILD_TYPE=Release
|
|
make -j
|
|
|
|
- name: Create staging directory
|
|
run: mkdir -p staging
|
|
|
|
- name: Create .nojekyll file in staging directory
|
|
run: touch staging/.nojekyll
|
|
|
|
- name: Copy application files
|
|
run: |
|
|
build_dir=build-em/bin
|
|
|
|
ls ${build_dir}
|
|
|
|
# command.wasm
|
|
target_dir=staging/command.wasm
|
|
mkdir -p ${target_dir}
|
|
cp ${build_dir}/command.wasm/{index.html,command.js,helpers.js} ${target_dir}
|
|
cp ${build_dir}/libcommand.js ${target_dir}
|
|
|
|
# bench.wasm
|
|
target_dir=staging/bench.wasm
|
|
mkdir -p ${target_dir}
|
|
cp ${build_dir}/bench.wasm/{index.html,bench.js,helpers.js} ${target_dir}
|
|
cp ${build_dir}/libbench.js ${target_dir}
|
|
|
|
# stream.wasm
|
|
target_dir=staging/stream.wasm
|
|
mkdir -p ${target_dir}
|
|
cp ${build_dir}/stream.wasm/{index.html,stream.js,helpers.js} ${target_dir}
|
|
cp ${build_dir}/libstream.js ${target_dir}
|
|
|
|
# whisper.wasm (this will be the main example page)
|
|
target_dir=staging
|
|
mkdir -p ${target_dir}
|
|
cp ${build_dir}/whisper.wasm/{index.html,main.js,helpers.js} ${target_dir}
|
|
cp ${build_dir}/libmain.js ${target_dir}
|
|
|
|
# Copy Cross-Origin Isolation service worker
|
|
cp -v examples/coi-serviceworker.js staging/
|
|
|
|
- name: List files in staging directory (for debugging)
|
|
run: |
|
|
echo "Files in staging directory:"
|
|
find staging -type f | sort
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-pages-artifact@v3
|
|
with:
|
|
path: ./staging
|
|
|
|
- name: Deploy to GitHub Pages
|
|
id: deployment
|
|
uses: actions/deploy-pages@v4
|