Skip to content

Commit b7aee94

Browse files
committed
Merge pull request #274 from Rustmail/273-optimize-panel-build
perf(panel): optimize panel build
2 parents ae974cd + ed182de commit b7aee94

5 files changed

Lines changed: 110 additions & 8 deletions

File tree

.github/workflows/release-ci.yml

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ jobs:
3535
rustup target add wasm32-unknown-unknown
3636
cargo install trunk --locked
3737
38+
- name: Install wasm-opt 125
39+
run: |
40+
wget https://github.com/WebAssembly/binaryen/releases/download/version_125/binaryen-version_125-x86_64-linux.tar.gz
41+
tar -xzf binaryen-version_125-x86_64-linux.tar.gz
42+
sudo mv binaryen-version_125/bin/wasm-opt /usr/local/bin/
43+
wasm-opt --version
44+
3845
- name: Build frontend
3946
working-directory: rustmail_panel
4047
run: trunk build --release --dist ../rustmail/static --config Trunk.toml
@@ -86,11 +93,26 @@ jobs:
8693
- name: Install Rust
8794
run: rustup update stable && rustup default stable
8895

89-
- name: Add wasm32 target
90-
run: rustup target add wasm32-unknown-unknown
96+
- name: Install trunk and wasm target
97+
run: |
98+
rustup target add wasm32-unknown-unknown
99+
cargo install trunk --locked
91100
92-
- name: Install trunk
93-
run: cargo install trunk --locked
101+
- name: Install wasm-opt 125
102+
run: |
103+
if [ "$RUNNER_OS" == "Linux" ]; then
104+
wget https://github.com/WebAssembly/binaryen/releases/download/version_125/binaryen-version_125-x86_64-linux.tar.gz
105+
tar -xzf binaryen-version_125-x86_64-linux.tar.gz
106+
sudo mv binaryen-version_125/bin/wasm-opt /usr/local/bin/
107+
elif [ "$RUNNER_OS" == "macOS" ]; then
108+
brew install binaryen
109+
elif [ "$RUNNER_OS" == "Windows" ]; then
110+
curl -L https://github.com/WebAssembly/binaryen/releases/download/version_125/binaryen-version_125-x86_64-windows.tar.gz -o binaryen.tar.gz
111+
tar -xzf binaryen.tar.gz
112+
mv binaryen-version_125/bin/wasm-opt.exe /usr/bin/
113+
fi
114+
wasm-opt --version
115+
shell: bash
94116

95117
- name: Create static directory
96118
run: mkdir -p rustmail/static

Cargo.lock

Lines changed: 74 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rustmail/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ subtle = "2.6.1"
2727
sha2 = "0.10.8"
2828
hex = "0.4.3"
2929
moka = { version = "0.12", features = ["future"] }
30+
tower-http = { version = "0.6.7", features = ["compression-gzip", "compression-br"] }
3031

3132
[dependencies.uuid]
3233
version = "1.18.1"

rustmail/src/main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use rust_embed::RustEmbed;
66
use std::borrow::Cow;
77
use std::net::SocketAddr;
88
use tokio::signal;
9+
use tower_http::compression::CompressionLayer;
910

1011
mod api;
1112
mod bot;
@@ -85,7 +86,8 @@ async fn main() {
8586
let server_task = tokio::spawn(async move {
8687
let app = create_api_router(bot_state_clone)
8788
.route("/", axum::routing::get(static_handler))
88-
.route("/{*path}", axum::routing::get(static_handler));
89+
.route("/{*path}", axum::routing::get(static_handler))
90+
.layer(CompressionLayer::new());
8991

9092
let bind_address = config
9193
.bot

rustmail_panel/Trunk.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
[build]
22
release = true
3-
generate-integrity = false
3+
generate-integrity = false
4+
5+
[[hooks]]
6+
stage = "post_build"
7+
command = "sh"
8+
command_arguments = ["-c", "find ../rustmail/static -name '*.wasm' -exec wasm-opt --debug -Oz {} -o {} \\;"]

0 commit comments

Comments
 (0)