Skip to content

Commit 7886b9c

Browse files
authored
Merge pull request #29 from WasmEdge/update/wasip1-migration
Migrate to wasm32-wasip1 and modernize CI
2 parents d63c044 + d7732ac commit 7886b9c

23 files changed

Lines changed: 2265 additions & 61 deletions

File tree

.github/workflows/examples.yml

Lines changed: 162 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ on:
1313
branches: [ main ]
1414

1515
jobs:
16-
build:
16+
linux:
1717

1818
runs-on: ubuntu-22.04
1919

2020
steps:
21-
- uses: actions/checkout@v2
21+
- uses: actions/checkout@v4
2222

2323
- name: Install apt-get packages
2424
run: |
@@ -60,8 +60,10 @@ jobs:
6060
6161
- name: Install and run GreptimeDB
6262
run: |
63-
curl -L https://github.com/GreptimeTeam/greptimedb/raw/develop/scripts/install.sh | sh
63+
GREPTIMEDB_VERSION=$(curl -sL "https://api.github.com/repos/GreptimeTeam/greptimedb/releases" | grep -oE '"tag_name": "v[^"]*"' | grep -v nightly | head -1 | grep -oE 'v[^"]*')
64+
curl -sL "https://github.com/GreptimeTeam/greptimedb/releases/download/${GREPTIMEDB_VERSION}/greptime-linux-amd64-${GREPTIMEDB_VERSION}.tar.gz" | tar xz --strip-components=1
6465
./greptime standalone start &
66+
sleep 3
6567
6668
- name: Install and run Qdrant in Docker
6769
run: |
@@ -82,18 +84,26 @@ jobs:
8284

8385
- name: Install Rust target for wasm
8486
run: |
85-
rustup target add wasm32-wasi
87+
rustup target add wasm32-wasip1
88+
89+
- name: Install WASI SDK
90+
run: |
91+
WASI_SDK_VERSION=25
92+
curl -L "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux.tar.gz" -o /tmp/wasi-sdk.tar.gz
93+
sudo tar xzf /tmp/wasi-sdk.tar.gz -C /opt/
94+
echo "WASI_SDK_PATH=/opt/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux" >> $GITHUB_ENV
95+
echo "CC_wasm32_wasip1=/opt/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux/bin/clang" >> $GITHUB_ENV
96+
echo "AR_wasm32_wasip1=/opt/wasi-sdk-${WASI_SDK_VERSION}.0-x86_64-linux/bin/ar" >> $GITHUB_ENV
8697
8798
- name: Install WasmEdge
8899
run: |
89-
VERSION=0.14.0
90-
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | sudo bash -s -- --version=$VERSION -p /usr/local
100+
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | sudo bash -s -- -p /usr/local
91101
92102
- name: MySQL async examples
93103
run: |
94104
cd mysql_async
95-
cargo build --target wasm32-wasi --release
96-
wasmedge compile target/wasm32-wasi/release/crud.wasm crud.wasm
105+
cargo build --target wasm32-wasip1 --release
106+
wasmedge compile target/wasm32-wasip1/release/crud.wasm crud.wasm
97107
resp=$(wasmedge --env "DATABASE_URL=mysql://root:root@localhost:3306/mysql" crud.wasm 2>&1)
98108
echo "$resp"
99109
if [[ $resp == *"Bobcat"* ]]; then
@@ -106,17 +116,17 @@ jobs:
106116
- name: GreptimeDB examples
107117
run: |
108118
cd greptimedb
109-
cargo build --target wasm32-wasi --release
110-
wasmedge compile target/wasm32-wasi/release/greptimedb.wasm greptimedb.wasm
119+
cargo build --target wasm32-wasip1 --release
120+
wasmedge compile target/wasm32-wasip1/release/greptimedb.wasm greptimedb.wasm
111121
resp=$(wasmedge --env "DATABASE_URL=mysql://localhost:4002/public" greptimedb.wasm 2>&1)
112122
echo "$resp"
113123
114124
- name: MySQL simple examples
115125
run: |
116126
cd mysql
117-
cargo build --target wasm32-wasi --release
118-
wasmedge compile target/wasm32-wasi/release/query.wasm query.wasm
119-
wasmedge compile target/wasm32-wasi/release/insert.wasm insert.wasm
127+
cargo build --target wasm32-wasip1 --release
128+
wasmedge compile target/wasm32-wasip1/release/query.wasm query.wasm
129+
wasmedge compile target/wasm32-wasip1/release/insert.wasm insert.wasm
120130
resp=$(wasmedge --env "DATABASE_URL=mysql://root:root@127.0.0.1:3306/mysql" query.wasm 2>&1)
121131
echo "$resp"
122132
if [[ $resp == *"localhost"* ]]; then
@@ -137,8 +147,8 @@ jobs:
137147
- name: Redis examples
138148
run: |
139149
cd redis
140-
cargo build --target wasm32-wasi --release
141-
wasmedge compile target/wasm32-wasi/release/wasmedge-redis-client-examples.wasm wasmedge-redis-client-examples.wasm
150+
cargo build --target wasm32-wasip1 --release
151+
wasmedge compile target/wasm32-wasip1/release/wasmedge-redis-client-examples.wasm wasmedge-redis-client-examples.wasm
142152
resp=$(wasmedge --env "REDIS_URL=redis://localhost/" wasmedge-redis-client-examples.wasm 2>&1)
143153
echo "$resp"
144154
if [[ $resp == *"UTC"* ]]; then
@@ -151,24 +161,24 @@ jobs:
151161
- name: PostgresSQL examples
152162
run: |
153163
cd postgres
154-
cargo build --target wasm32-wasi --release
155-
wasmedge compile target/wasm32-wasi/release/crud.wasm crud.wasm
164+
cargo build --target wasm32-wasip1 --release
165+
wasmedge compile target/wasm32-wasip1/release/crud.wasm crud.wasm
156166
resp=$(wasmedge --env "DATABASE_URL=postgres://wasmedge:mysecret@localhost/testdb" crud.wasm 2>&1)
157167
echo "$resp"
158168
159169
- name: Qdrant examples
160170
run: |
161171
cd qdrant
162-
cargo build --target wasm32-wasi --release
163-
wasmedge compile target/wasm32-wasi/release/qdrant_examples.wasm qdrant_examples.wasm
172+
cargo build --target wasm32-wasip1 --release
173+
wasmedge compile target/wasm32-wasip1/release/qdrant_examples.wasm qdrant_examples.wasm
164174
resp=$(wasmedge qdrant_examples.wasm 2>&1)
165175
echo "$resp"
166176
167177
# - name: Anna KVS examples
168178
# run: |
169179
# cd anna
170-
# cargo build --target wasm32-wasi --release
171-
# wasmedgec target/wasm32-wasi/release/putget.wasm putget.wasm
180+
# cargo build --target wasm32-wasip1 --release
181+
# wasmedge compile target/wasm32-wasip1/release/putget.wasm putget.wasm
172182
# resp=$(wasmedge putget.wasm 2>&1)
173183
# echo "$resp"
174184
# if [[ $resp == *"UTC"* ]]; then
@@ -191,3 +201,134 @@ jobs:
191201
echo -e "Execution Fail!"
192202
exit 1
193203
fi
204+
205+
macos:
206+
207+
runs-on: macos-14
208+
209+
steps:
210+
- uses: actions/checkout@v4
211+
212+
- name: Install Rust target for wasm
213+
run: |
214+
rustup update stable
215+
rustup target add wasm32-wasip1
216+
217+
- name: Install wasi-sdk
218+
run: |
219+
WASI_SDK_VERSION=25
220+
curl -sL "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION}/wasi-sdk-${WASI_SDK_VERSION}.0-arm64-macos.tar.gz" | tar xz
221+
echo "WASI_SDK_PATH=$(pwd)/wasi-sdk-${WASI_SDK_VERSION}.0-arm64-macos" >> $GITHUB_ENV
222+
echo "CC_wasm32_wasip1=$(pwd)/wasi-sdk-${WASI_SDK_VERSION}.0-arm64-macos/bin/clang" >> $GITHUB_ENV
223+
echo "AR_wasm32_wasip1=$(pwd)/wasi-sdk-${WASI_SDK_VERSION}.0-arm64-macos/bin/ar" >> $GITHUB_ENV
224+
225+
- name: Install latest WasmEdge
226+
run: |
227+
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash
228+
echo "$HOME/.wasmedge/bin" >> $GITHUB_PATH
229+
230+
- name: Install and run MySQL
231+
run: |
232+
brew install mysql
233+
brew services start mysql
234+
sleep 5
235+
mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';"
236+
mysql -e "SET GLOBAL max_allowed_packet = 36700160;" -uroot -proot
237+
238+
- name: Install and run Redis
239+
run: |
240+
brew install redis
241+
brew services start redis
242+
sleep 2
243+
244+
- name: Install and run PostgreSQL
245+
run: |
246+
brew install postgresql@14
247+
brew services start postgresql@14
248+
sleep 5
249+
createuser -w wasmedge
250+
createdb -O wasmedge testdb
251+
psql -d testdb -c "ALTER USER wasmedge PASSWORD 'mysecret';"
252+
psql -d testdb -c 'SELECT datname FROM pg_catalog.pg_database'
253+
254+
- name: Install and run GreptimeDB
255+
run: |
256+
GREPTIMEDB_VERSION=$(curl -sL "https://api.github.com/repos/GreptimeTeam/greptimedb/releases" | grep -oE '"tag_name": "v[^"]*"' | grep -v nightly | head -1 | grep -oE 'v[^"]*')
257+
curl -sL "https://github.com/GreptimeTeam/greptimedb/releases/download/${GREPTIMEDB_VERSION}/greptime-darwin-arm64-${GREPTIMEDB_VERSION}.tar.gz" | tar xz --strip-components=1
258+
./greptime standalone start &
259+
sleep 3
260+
261+
- name: Install and run Qdrant
262+
run: |
263+
curl -sL "https://github.com/qdrant/qdrant/releases/latest/download/qdrant-aarch64-apple-darwin.tar.gz" | tar xz -C /tmp/
264+
nohup /tmp/qdrant &
265+
sleep 3
266+
curl -s http://localhost:6333/healthz || echo "Qdrant health check"
267+
268+
- name: MySQL async examples
269+
run: |
270+
cd mysql_async
271+
cargo build --target wasm32-wasip1 --release
272+
resp=$(wasmedge --env "DATABASE_URL=mysql://root:root@localhost:3306/mysql" target/wasm32-wasip1/release/crud.wasm 2>&1)
273+
echo "$resp"
274+
if [[ $resp == *"Bobcat"* ]]; then
275+
echo -e "Execution Success!"
276+
else
277+
echo -e "Execution Fail!"
278+
exit 1
279+
fi
280+
281+
- name: GreptimeDB examples
282+
run: |
283+
cd greptimedb
284+
cargo build --target wasm32-wasip1 --release
285+
resp=$(wasmedge --env "DATABASE_URL=mysql://localhost:4002/public" target/wasm32-wasip1/release/greptimedb.wasm 2>&1)
286+
echo "$resp"
287+
288+
- name: MySQL simple examples
289+
run: |
290+
cd mysql
291+
cargo build --target wasm32-wasip1 --release
292+
resp=$(wasmedge --env "DATABASE_URL=mysql://root:root@127.0.0.1:3306/mysql" target/wasm32-wasip1/release/query.wasm 2>&1)
293+
echo "$resp"
294+
if [[ $resp == *"localhost"* ]]; then
295+
echo -e "Execution Success!"
296+
else
297+
echo -e "Execution Fail!"
298+
exit 1
299+
fi
300+
resp=$(wasmedge --env "DATABASE_URL=mysql://root:root@localhost:3306/mysql" target/wasm32-wasip1/release/insert.wasm 2>&1)
301+
echo "$resp"
302+
if [[ $resp == *"foo"* ]]; then
303+
echo -e "Execution Success!"
304+
else
305+
echo -e "Execution Fail!"
306+
exit 1
307+
fi
308+
309+
- name: Redis examples
310+
run: |
311+
cd redis
312+
cargo build --target wasm32-wasip1 --release
313+
resp=$(wasmedge --env "REDIS_URL=redis://localhost/" target/wasm32-wasip1/release/wasmedge-redis-client-examples.wasm 2>&1)
314+
echo "$resp"
315+
if [[ $resp == *"UTC"* ]]; then
316+
echo -e "Execution Success!"
317+
else
318+
echo -e "Execution Fail!"
319+
exit 1
320+
fi
321+
322+
- name: PostgresSQL examples
323+
run: |
324+
cd postgres
325+
cargo build --target wasm32-wasip1 --release
326+
resp=$(wasmedge --env "DATABASE_URL=postgres://wasmedge:mysecret@localhost/testdb" target/wasm32-wasip1/release/crud.wasm 2>&1)
327+
echo "$resp"
328+
329+
- name: Qdrant examples
330+
run: |
331+
cd qdrant
332+
cargo build --target wasm32-wasip1 --release
333+
resp=$(wasmedge target/wasm32-wasip1/release/qdrant_examples.wasm 2>&1)
334+
echo "$resp"

anna/.cargo/config.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[build]
2-
target = "wasm32-wasi"
2+
target = "wasm32-wasip1"
33

4-
[target.wasm32-wasi]
4+
[target.wasm32-wasip1]
55
runner = "wasmedge"

anna/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ Then, build and run the example app in this repo:
2222
```sh
2323
$ git clone https://github.com/WasmEdge/wasmedge-db-examples.git
2424
$ cd wasmedge-db-examples/anna
25-
$ cargo build --target wasm32-wasi
26-
$ /path/to/wasmedge --dir .:. target/wasm32-wasi/debug/putget.wasm
25+
$ cargo build --target wasm32-wasip1
26+
$ /path/to/wasmedge --dir .:. target/wasm32-wasip1/debug/putget.wasm
2727
```

greptimedb/.cargo/config.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[build]
2-
target = "wasm32-wasi"
2+
target = "wasm32-wasip1"
33
rustflags = ["--cfg", "wasmedge", "--cfg", "tokio_unstable"]
44

5-
[target.wasm32-wasi]
5+
[target.wasm32-wasip1]
66
runner = "wasmedge"

greptimedb/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ version = "0.1.0"
44
edition = "2021"
55

66
[patch.crates-io]
7-
tokio = { git = "https://github.com/second-state/wasi_tokio.git", branch = "v1.36.x" }
7+
tokio = { git = "https://github.com/second-state/wasi_tokio.git", branch = "v1.40.x" }
8+
tokio-util = { git = "https://github.com/second-state/wasi_tokio.git", branch = "v1.40.x" }
9+
mio = { git = "https://github.com/second-state/wasi_mio.git", branch = "v1.0.x" }
810
socket2 = { git = "https://github.com/second-state/socket2.git", branch = "v0.5.x" }
911

1012
[dependencies]

greptimedb/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ You can compile and run the examples using the following commands:
2020

2121
```bash
2222
cargo build
23-
wasmedge --env "DATABASE_URL=mysql://user:passwd@host:4002/dbname" target/wasm32-wasi/debug/greptimedb.wasm
23+
wasmedge --env "DATABASE_URL=mysql://user:passwd@host:4002/dbname" target/wasm32-wasip1/debug/greptimedb.wasm
2424
```

mysql/.cargo/config.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[build]
2-
target = "wasm32-wasi"
2+
target = "wasm32-wasip1"
33

4-
[target.wasm32-wasi]
4+
[target.wasm32-wasip1]
55
runner = "wasmedge"

0 commit comments

Comments
 (0)