Skip to content

Commit 89f854e

Browse files
bors[bot]zicklag
andauthored
Merge #170
170: Web Build & CI Improvements r=zicklag a=zicklag - Make web build use it's own target folder to streamline local development of both native and web builds. - Make web build URL path agnostic so it can be hosted under any path. - Make web player build in CI use different paths for each release along with a latest path that symlinks to the latest release. Co-authored-by: Zicklag <[email protected]>
2 parents b17548f + fa5c3a2 commit 89f854e

File tree

5 files changed

+61
-18
lines changed

5 files changed

+61
-18
lines changed

.github/workflows/web-demo.yml

+21-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ name: Publish Web Demo
33
on:
44
push:
55
tags:
6-
- web-demo
76
- 'v*'
87
jobs:
98
publish-web-demo:
@@ -34,13 +33,29 @@ jobs:
3433
with:
3534
version: '0.2.81'
3635

37-
- name: Build WASM Dist 🔨
38-
run: just build-release-web /punchy/demo
36+
- name: Build WASM Release 🔨
37+
run: just build-release-web
3938

4039
- name: Deploy 🚀
4140
uses: JamesIves/[email protected]
4241
with:
4342
branch: gh-pages
44-
folder: target/wasm-dist
45-
target-folder: demo
46-
ssh-key: ${{ secrets.MASTER_GH_PAGES_DEPLOY_KEY }}
43+
folder: web-target/wasm-release
44+
target-folder: player/${{ github.ref_name }}
45+
ssh-key: ${{ secrets.MASTER_GH_PAGES_DEPLOY_KEY }}
46+
47+
- name: Symlink Latest Build
48+
run: |
49+
mkdir latest-symlink-dir
50+
ln -s ./${{ github.ref_name }} latest
51+
mv latest latest-symlink-dir
52+
53+
- name: Deploy Symlinked Latest Build 🚀
54+
uses: JamesIves/[email protected]
55+
with:
56+
branch: gh-pages
57+
folder: latest-symlink-dir
58+
clean: false
59+
target-folder: player
60+
ssh-key: ${{ secrets.MASTER_GH_PAGES_DEPLOY_KEY }}
61+

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/target
2+
/web-target
23
.cargo

justfile

+8-11
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,19 @@ build:
1313
build-release:
1414
cargo build --release
1515

16-
build-web:
17-
cargo build --target wasm32-unknown-unknown
18-
wasm-bindgen --out-dir target/wasm --target web target/wasm32-unknown-unknown/debug/punchy.wasm
19-
cat wasm_resources/index.html | sed "s/\$BASEPATH//g" > target/wasm/index.html
20-
mkdir -p target/wasm
21-
cp -r assets target/wasm/
16+
build-web basepath='':
17+
./scripts/build-web.sh
2218

2319
build-release-web basepath='':
24-
cargo build --target wasm32-unknown-unknown --release
25-
wasm-bindgen --out-dir target/wasm-dist --no-typescript --target web target/wasm32-unknown-unknown/release/punchy.wasm
26-
cat wasm_resources/index.html | sed "s/\$BASEPATH/$(printf {{basepath}} | sed 's/\//\\\//g')/g" > target/wasm-dist/index.html
27-
cp -r assets target/wasm-dist/
20+
./scripts/build-web.sh release
2821

2922
run *args:
3023
cargo run -- {{args}}
3124

3225
run-web port='4000' host='127.0.0.1': build-web
3326
@echo "Debug link: http://{{host}}:{{port}}?RUST_LOG=debug"
34-
basic-http-server -a '{{host}}:{{port}}' -x target/wasm
27+
basic-http-server -a '{{host}}:{{port}}' -x web-target/wasm-debug
28+
29+
run-release-web port='4000' host='127.0.0.1': build-release-web
30+
@echo "Debug link: http://{{host}}:{{port}}?RUST_LOG=debug"
31+
basic-http-server -a '{{host}}:{{port}}' -x web-target/wasm-release

scripts/build-web.sh

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/env bash
2+
3+
#
4+
# This script is usually run by the justfile
5+
#
6+
7+
is_release="$1"
8+
target=wasm32-unknown-unknown
9+
target_dir="web-target"
10+
11+
release_arg=""
12+
build_kind="debug"
13+
dist_dir="$target_dir/wasm-debug"
14+
15+
if [ "$is_release" == "release" ]; then
16+
release_arg="--release"
17+
build_kind="release"
18+
dist_dir="$target_dir/wasm-release"
19+
fi
20+
21+
export CARGO_TARGET_DIR=$target_dir
22+
23+
set -x
24+
25+
cargo build --target $target $release_arg
26+
rm -rf $dist_dir
27+
mkdir -p $dist_dir
28+
wasm-bindgen --out-dir $dist_dir --target web --no-typescript $target_dir/$target/$build_kind/punchy.wasm
29+
cp wasm_resources/index.html $dist_dir/index.html
30+
cp -r assets $dist_dir

wasm_resources/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@
136136
})();
137137
</script>
138138
<script type="module">
139-
import init from "$BASEPATH/punchy.js";
139+
import init from "./punchy.js";
140140
init();
141141
</script>
142142
</body>

0 commit comments

Comments
 (0)