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