1111 - " website/**"
1212 types : [labeled, synchronize, opened, reopened]
1313
14- permissions :
15- # deployments permission to deploy GitHub pages website
16- deployments : write
17- # contents permission to update benchmark contents in gh-pages branch
18- contents : write
14+ # Cancel outstanding benchmarks on pull requests
15+ # https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#example-using-a-fallback-value
16+ concurrency :
17+ group : ${{ github.head_ref || github.run_id }}
18+ cancel-in-progress : true
1919
2020jobs :
2121 benchmark :
22+ if : github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'performance')
2223 runs-on : ubuntu-latest
2324
2425 steps :
@@ -37,91 +38,106 @@ jobs:
3738 toolchain : stable
3839 targets : wasm32-unknown-unknown
3940
40- - uses : jetli/wasm-pack-action@v0.4.0
41- with :
42- version : " latest"
41+ - name : Setup wasm-pack
42+ uses : jetli/wasm-pack-action@v0.4.0
4343
4444 - name : Setup Node
4545 uses : actions/setup-node@v4
4646 with :
47- node-version : 18
47+ node-version : " >=18 "
4848 cache : " npm"
4949 cache-dependency-path : js-framework-benchmark/package-lock.json
5050
51- - uses : Swatinem/rust-cache@v2
51+ - name : Restore Rust cache for yew packages
52+ uses : Swatinem/rust-cache@v2
53+ with :
54+ shared-key : yew-packages
55+ workspaces : |
56+ yew
5257
53- - name : setup js-framework-benchmark
58+ - name : Setup chrome
59+ id : setup-chrome
60+ uses : browser-actions/setup-chrome@v1
61+ with :
62+ install-chromedriver : true
63+
64+ - name : Setup js-framework-benchmark
5465 working-directory : js-framework-benchmark
5566 run : |
5667 npm ci
5768 npm run install-server
5869 npm run install-webdriver-ts
5970
60- - name : setup benchmark-struct benchmark
71+ - name : Setup benchmark-struct benchmark
6172 run : |
6273 ls -lauh
6374 rm *.js
6475 rm *.wasm
6576 echo "STRUCT_BUILD_DIR=$PWD" >> $GITHUB_ENV
6677 working-directory : js-framework-benchmark/frameworks/keyed/yew/bundled-dist/
6778
68- - name : build benchmark-struct app
79+ - name : Build benchmark-struct app
6980 working-directory : yew/tools/benchmark-struct
7081 run : |
71- wasm-pack build \
82+ RUSTFLAGS='--cfg getrandom_backend="wasm_js"' wasm-pack build \
7283 --release \
7384 --target web \
7485 --no-typescript \
7586 --out-name js-framework-benchmark-yew \
7687 --out-dir $STRUCT_BUILD_DIR
7788
78- - name : show built benchmark-struct benchmark files
89+ - name : Show built benchmark-struct benchmark files
7990 run : |
8091 ls -lauh js-framework-benchmark/frameworks/keyed/yew/bundled-dist/
8192
82- - name : setup yew-hooks benchmark
93+ - name : Setup yew-hooks benchmark
8394 run : |
8495 ls -lauh
8596 rm *.js
8697 rm *.wasm
8798 echo "HOOKS_BUILD_DIR=$PWD" >> $GITHUB_ENV
8899 working-directory : js-framework-benchmark/frameworks/keyed/yew-hooks/bundled-dist/
89100
90- - name : build benchmark-hooks app
101+ - name : Build benchmark-hooks app
91102 working-directory : yew/tools/benchmark-hooks
92103 run : |
93- wasm-pack build \
104+ RUSTFLAGS='--cfg getrandom_backend="wasm_js"' wasm-pack build \
94105 --release \
95106 --target web \
96107 --no-typescript \
97108 --out-name js-framework-benchmark-yew-hooks \
98109 --out-dir $HOOKS_BUILD_DIR
99110
100- - name : show built benchmark-hooks benchmark files
111+ - name : Show built benchmark-hooks benchmark files
101112 run : |
102113 ls -lauh js-framework-benchmark/frameworks/keyed/yew-hooks/bundled-dist/
103114
104- - name : run js-framework-benchmark server
115+ - name : Run js-framework-benchmark server
105116 working-directory : js-framework-benchmark
106117 run : |
107118 npm start &
108119 sleep 5
109120
110- - name : js-framework-benchmark/webdriver-ts npm run bench
121+ # https://chromium.googlesource.com/chromium/src/+/main/docs/security/apparmor-userns-restrictions.md
122+ - run : echo 0 | sudo tee /proc/sys/kernel/apparmor_restrict_unprivileged_userns
123+
124+ - name : Run js-framework-benchmark/webdriver-ts npm run bench
111125 working-directory : js-framework-benchmark/webdriver-ts
112- run : xvfb-run npm run bench -- --framework keyed/yew keyed/yew-hooks --runner playwright
126+ run : xvfb-run npm run bench -- --framework keyed/yew keyed/yew-hooks --runner playwright --chromeBinary "${{ steps.setup-chrome.outputs.chrome-path }}"
113127
114- - name : transform results to be fit for display benchmark-action/github-action-benchmark@v1
128+ - name : Transform results to be fit for display benchmark-action/github-action-benchmark@v1
115129 run : |
116130 mkdir artifacts/
117131 jq -s . js-framework-benchmark/webdriver-ts/results/*.json | cargo run --manifest-path yew/Cargo.toml --release -p process-benchmark-results > artifacts/results.json
118- echo "$EVENT_INFO" > artifacts/PR_INFO
132+ echo "$EVENT_INFO" > artifacts/. PR_INFO
119133 env :
120134 EVENT_INFO : ${{ toJSON(github.event) }}
121135
122136 - name : Upload result artifacts
123- uses : actions/upload-artifact@v3
137+ uses : actions/upload-artifact@v4
124138 with :
125139 name : results
126140 path : artifacts/
127141 if-no-files-found : error
142+ include-hidden-files : true
143+ retention-days : 1
0 commit comments