mirror of
https://github.com/ChaiScript/ChaiScript.git
synced 2026-04-30 19:09:26 +08:00
* Fix #472: Add Emscripten/WebAssembly build for browser-based ChaiScript Port Rob Loach's ChaiScript.js work (https://github.com/RobLoach/ChaiScript.js) into the main repository as an Emscripten build target. Adds a GitHub Actions workflow that builds ChaiScript to WebAssembly and publishes artifacts (JS, WASM, HTML) for embedding in the official ChaiScript.com website. Includes an HTML interactive playground frontend and a native test validating the eval API surface. Co-Authored-By: Rob Loach <robloach@gmail.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Address review: publish WASM assets as release under wasm-latest tag Add a publish job to the emscripten workflow that creates a prerelease tagged wasm-latest with chaiscript.js, chaiscript.wasm, and chaiscript.html as downloadable assets. Runs only on pushes to the develop branch. The website repo can fetch these via the public GitHub Releases API on a daily cron without any cross-repo auth. Requested by @lefticus in PR #662 review. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: leftibot <leftibot@users.noreply.github.com> Co-authored-by: Rob Loach <robloach@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
2.1 KiB
YAML
72 lines
2.1 KiB
YAML
name: Emscripten
|
|
|
|
on:
|
|
push:
|
|
branches: [develop, main]
|
|
pull_request:
|
|
branches: [develop, main]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
emscripten:
|
|
name: Emscripten WebAssembly Build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup Emscripten
|
|
uses: mymindstorm/setup-emsdk@v14
|
|
|
|
- name: Configure
|
|
run: emcmake cmake -B build-em -S emscripten -DCMAKE_BUILD_TYPE=Release
|
|
|
|
- name: Build
|
|
run: cmake --build build-em -j
|
|
|
|
- name: Verify artifacts
|
|
run: |
|
|
test -f build-em/chaiscript.js
|
|
test -f build-em/chaiscript.wasm
|
|
test -f build-em/chaiscript.html
|
|
echo "All expected artifacts present"
|
|
ls -lh build-em/chaiscript.*
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: chaiscript-web
|
|
path: |
|
|
build-em/chaiscript.js
|
|
build-em/chaiscript.wasm
|
|
build-em/chaiscript.html
|
|
retention-days: 90
|
|
|
|
publish:
|
|
name: Publish WASM Release
|
|
needs: emscripten
|
|
if: github.ref == 'refs/heads/develop' && github.event_name == 'push'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: chaiscript-web
|
|
path: artifacts
|
|
|
|
- name: Publish to wasm-latest release
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
# Flatten: artifacts may contain build-em/ subdirectory
|
|
find artifacts -type f \( -name 'chaiscript.js' -o -name 'chaiscript.wasm' -o -name 'chaiscript.html' \) -exec cp {} . \;
|
|
|
|
# Delete existing release if present, then recreate
|
|
gh release delete wasm-latest --repo "$GITHUB_REPOSITORY" -y 2>/dev/null || true
|
|
gh release create wasm-latest \
|
|
--repo "$GITHUB_REPOSITORY" \
|
|
--title "ChaiScript WASM Build (latest)" \
|
|
--notes "Auto-published from develop branch. Built with Emscripten for browser use." \
|
|
--prerelease \
|
|
chaiscript.js chaiscript.wasm chaiscript.html
|