Skip to content

Commit 51860a3

Browse files
quantumclaude
authored andcommitted
fix: optimize CI build times while preserving release quality
- Add conditional optimization based on build context - PR builds use minimal optimization (-O2) for faster CI - Release builds use full optimization for production quality - Increase release workflow timeout from 15 to 30 minutes - Detect release context via CARGO_BUILD_PROFILE or GITHUB_EVENT_NAME This allows PRs to build quickly (under 10 minutes) while ensuring NPM releases still get fully optimized WASM binaries. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 3e843bd commit 51860a3

File tree

3 files changed

+59
-38
lines changed

3 files changed

+59
-38
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
release-npm:
2323
name: Release NPM packages
2424
runs-on: ubuntu-24.04
25-
timeout-minutes: 15
25+
timeout-minutes: 30
2626
if: github.event_name != 'workflow_dispatch'
2727
steps:
2828
- name: Check out repo

packages/wasm-dpp/scripts/build-wasm.sh

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,15 @@ fi
4949

5050
if command -v wasm-opt &> /dev/null; then
5151
echo "Optimizing wasm using Binaryen"
52-
wasm-opt -tnh --flatten --rereloop -Oz --gufa -Oz --gufa -Oz "$OUTPUT_FILE" -o "$OUTPUT_FILE"
52+
53+
# Check if we're in a release build (via CARGO_BUILD_PROFILE or GitHub event)
54+
if [ "${CARGO_BUILD_PROFILE}" = "release" ] || [ "${GITHUB_EVENT_NAME}" = "release" ] || [ "${GITHUB_EVENT_NAME}" = "workflow_dispatch" ]; then
55+
echo "Running full optimizations for release build"
56+
wasm-opt -tnh --flatten --rereloop -Oz --gufa -Oz --gufa -Oz "$OUTPUT_FILE" -o "$OUTPUT_FILE"
57+
else
58+
echo "Running minimal optimizations for development/PR build"
59+
wasm-opt -O2 "$OUTPUT_FILE" -o "$OUTPUT_FILE"
60+
fi
5361
else
5462
echo "wasm-opt command not found. Skipping wasm optimization."
5563
fi

packages/wasm-drive-verify/build.sh

Lines changed: 49 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -39,42 +39,55 @@ wasm-bindgen \
3939

4040
if command -v wasm-opt &> /dev/null; then
4141
echo "Optimizing wasm using Binaryen"
42-
wasm-opt \
43-
--code-folding \
44-
--const-hoisting \
45-
--abstract-type-refining \
46-
--dce \
47-
--strip-producers \
48-
-Oz \
49-
--generate-global-effects \
50-
--enable-bulk-memory \
51-
--enable-nontrapping-float-to-int \
52-
-tnh \
53-
--flatten \
54-
--rereloop \
55-
-Oz \
56-
--converge \
57-
--vacuum \
58-
--dce \
59-
--gsi \
60-
--inlining-optimizing \
61-
--merge-blocks \
62-
--simplify-locals \
63-
--low-memory-unused \
64-
--optimize-added-constants \
65-
--optimize-casts \
66-
--optimize-instructions \
67-
--optimize-stack-ir \
68-
--remove-unused-brs \
69-
--remove-unused-module-elements \
70-
--remove-unused-names \
71-
--remove-unused-types \
72-
--post-emscripten \
73-
-Oz \
74-
-Oz \
75-
"pkg/wasm_drive_verify_bg.wasm" \
76-
-o \
77-
"pkg/wasm_drive_verify_bg.wasm"
42+
43+
# Check if we're in a release build (via CARGO_BUILD_PROFILE or GitHub event)
44+
if [ "${CARGO_BUILD_PROFILE}" = "release" ] || [ "${GITHUB_EVENT_NAME}" = "release" ] || [ "${GITHUB_EVENT_NAME}" = "workflow_dispatch" ]; then
45+
echo "Running full optimizations for release build"
46+
wasm-opt \
47+
--code-folding \
48+
--const-hoisting \
49+
--abstract-type-refining \
50+
--dce \
51+
--strip-producers \
52+
-Oz \
53+
--generate-global-effects \
54+
--enable-bulk-memory \
55+
--enable-nontrapping-float-to-int \
56+
-tnh \
57+
--flatten \
58+
--rereloop \
59+
-Oz \
60+
--converge \
61+
--vacuum \
62+
--dce \
63+
--gsi \
64+
--inlining-optimizing \
65+
--merge-blocks \
66+
--simplify-locals \
67+
--low-memory-unused \
68+
--optimize-added-constants \
69+
--optimize-casts \
70+
--optimize-instructions \
71+
--optimize-stack-ir \
72+
--remove-unused-brs \
73+
--remove-unused-module-elements \
74+
--remove-unused-names \
75+
--remove-unused-types \
76+
--post-emscripten \
77+
-Oz \
78+
-Oz \
79+
"pkg/wasm_drive_verify_bg.wasm" \
80+
-o \
81+
"pkg/wasm_drive_verify_bg.wasm"
82+
else
83+
echo "Running minimal optimizations for development/PR build"
84+
wasm-opt \
85+
--strip-producers \
86+
-O2 \
87+
"pkg/wasm_drive_verify_bg.wasm" \
88+
-o \
89+
"pkg/wasm_drive_verify_bg.wasm"
90+
fi
7891
else
7992
echo "wasm-opt command not found. Skipping wasm optimization."
8093
fi

0 commit comments

Comments
 (0)