Skip to content

ci(rust-static-lib): update workflow #249

ci(rust-static-lib): update workflow

ci(rust-static-lib): update workflow #249

Workflow file for this run

name: Continuous integration
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
on:
push:
paths-ignore:
- "**/*.md"
- ".github/workflows/standalone.yml"
pull_request:
paths-ignore:
- "**/*.md"
- ".github/workflows/standalone.yml"
jobs:
build_ubuntu:
name: Ubuntu
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-20.04]
rust: [1.73, 1.72, 1.71]
container:
image: wasmedge/wasmedge:ubuntu-build-clang
steps:
- name: Checkout WasmEdge Rust SDK
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout WasmEdge Runtime
uses: actions/checkout@v3
with:
repository: WasmEdge/WasmEdge
path: WasmEdge
- name: Build WasmEdge with Release mode
working-directory: WasmEdge
run: |
apt update
apt install -y software-properties-common libboost-all-dev llvm-15-dev liblld-15-dev ninja-build libssl-dev
cmake -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Release -DWASMEDGE_PLUGIN_PROCESS=On -DWASMEDGE_PLUGIN_WASI_CRYPTO=On .
cmake --build build
cmake --install build
ldconfig
- name: Install Rust-nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- name: Rustfmt
run: cargo +nightly fmt --all -- --check
- name: Clippy check
run: |
cargo +nightly clippy -V
cargo +nightly clippy --lib --examples --features aot,wasi_crypto,wasi_nn,wasmedge_process,ffi -- -D warnings
- name: Clippy check for async feature
run: |
cargo +nightly clippy -V
cargo +nightly clippy --lib --examples --features aot,async,wasi_crypto,wasi_nn,wasmedge_process,ffi -- -D warnings
- name: Install Rust-stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Build Async-Hello for Testing
working-directory: examples/wasmedge-sys
run: |
rustup target add wasm32-wasi
rustc async_hello.rs --target=wasm32-wasi -o async_hello.wasm
rustc hello.rs --target=wasm32-wasi -o hello.wasm
- name: Test Rust SDK
run: |
cargo test --workspace --locked --features aot,wasmedge_process,ffi -- --nocapture --test-threads=1
- name: Test Rust SDK with async feature
run: |
cargo test --workspace --locked --features aot,async,wasmedge_process,ffi -- --nocapture --test-threads=1
build_fedora:
name: Fedora
runs-on: ubuntu-latest
strategy:
matrix:
rust: [1.73, 1.72, 1.71]
container:
image: fedora:latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout WasmEdge Runtime
uses: actions/checkout@v3
with:
repository: WasmEdge/WasmEdge
path: WasmEdge
- name: Build WasmEdge with Release mode
working-directory: WasmEdge
run: |
dnf update -y
dnf install -y cmake ninja-build boost llvm llvm-devel lld-devel clang git file rpm-build dpkg-dev spdlog-devel
git config --global --add safe.directory $(pwd)
cmake -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Release -DWASMEDGE_PLUGIN_PROCESS=On -DWASMEDGE_BUILD_TESTS=ON -DWASMEDGE_BUILD_PACKAGE="TGZ;DEB;RPM" .
cmake --build build
cmake --install build
- name: Install Rust-nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- name: Rustfmt
run: cargo +nightly fmt --all -- --check
- name: Clippy check
run: |
cargo +nightly clippy -V
cargo +nightly clippy --lib --examples --features aot,wasi_crypto,wasi_nn,wasmedge_process,ffi -- -D warnings
- name: Clippy check for async feature
run: |
cargo +nightly clippy -V
cargo +nightly clippy --lib --examples --features aot,async,wasi_crypto,wasi_nn,wasmedge_process,ffi -- -D warnings
- name: Install Rust-stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Build Async-Hello for Testing
working-directory: examples/wasmedge-sys
run: |
rustup target add wasm32-wasi
rustc async_hello.rs --target=wasm32-wasi -o async_hello.wasm
rustc hello.rs --target=wasm32-wasi -o hello.wasm
- name: Test Rust SDK
run: |
export WASMEDGE_DIR="$(pwd)/WasmEdge"
export WASMEDGE_BUILD_DIR="$(pwd)/WasmEdge/build"
export WASMEDGE_PLUGIN_PATH="$(pwd)/WasmEdge/build/plugins/wasmedge_process"
export LD_LIBRARY_PATH="$(pwd)/WasmEdge/build/lib/api"
cargo test --workspace --locked --features aot,wasmedge_process,ffi -- --nocapture --test-threads=1 --skip test_vmbuilder
- name: Test Rust SDK with async feature
run: |
export WASMEDGE_DIR="$(pwd)/WasmEdge"
export WASMEDGE_BUILD_DIR="$(pwd)/WasmEdge/build"
export WASMEDGE_PLUGIN_PATH="$(pwd)/WasmEdge/build/plugins/wasmedge_process"
export LD_LIBRARY_PATH="$(pwd)/WasmEdge/build/lib/api"
cargo test --workspace --locked --features aot,async,wasmedge_process,ffi -- --nocapture --test-threads=1
build_macos:
name: MacOS
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-12, macos-13]
rust: [1.73, 1.72, 1.71]
steps:
- name: Checkout sources
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout WasmEdge Runtime
uses: actions/checkout@v3
with:
repository: WasmEdge/WasmEdge
path: WasmEdge
- name: Install build tools
run: brew install llvm ninja boost cmake
- name: Build WasmEdge with Release mode
working-directory: WasmEdge
run: |
export LLVM_DIR="/usr/local/opt/llvm/lib/cmake"
export CC=clang
export CXX=clang++
rm -rf build
cmake -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Release .
cmake --build build
cmake --install build
- name: Install Rust-nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- name: Run cargo fmt
run: cargo +nightly fmt --all -- --check
- name: Clippy
run: |
cargo +nightly clippy -V
cargo +nightly clippy --lib --examples --features aot,ffi -- -D warnings
- name: Install Rust-stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Test Rust Bindings
run: |
cargo test --workspace --exclude async-wasi --locked --features aot,ffi -- --nocapture --test-threads=1
build_windows:
name: Windows
runs-on: windows-2022
strategy:
matrix:
rust: [1.73, 1.72, 1.71]
env:
WASMEDGE_DIR: ${{ github.workspace }}\WasmEdge
WASMEDGE_BUILD_DIR: ${{ github.workspace }}\WasmEdge\build
WASMEDGE_PLUGIN_PATH: ${{ github.workspace }}\WasmEdge\build\wasmedge\plugins\wasmedge_process
LD_LIBRARY_PATH: ${{ github.workspace }}\WasmEdge\build\lib\api
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout WasmEdge Runtime
uses: actions/checkout@v3
with:
repository: WasmEdge/WasmEdge
path: WasmEdge
- name: Install dependency
uses: crazy-max/ghaction-chocolatey@v2
with:
args: install cmake ninja vswhere
- name: Set up Windows 10 SDK
uses: GuillaumeFalourd/setup-windows10-sdk-action@v1.11
with:
sdk-version: 19041
- name: Build WasmEdge with Release mode
working-directory: WasmEdge
run: |
$vsPath = (vswhere -latest -property installationPath)
Import-Module (Join-Path $vsPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64 -winsdk=10.0.19041.0"
$llvm = "LLVM-13.0.1-win64.zip"
curl -sLO https://github.com/WasmEdge/llvm-windows/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.zip -o $llvm
Expand-Archive -Path $llvm
$llvm_dir = "$pwd\\LLVM-13.0.1-win64\\LLVM-13.0.1-win64\\lib\\cmake\\llvm"
$Env:CC = "clang-cl"
$Env:CXX = "clang-cl"
$cmake_sys_version = "10.0.19041.0"
cmake -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Release "-DCMAKE_SYSTEM_VERSION=$cmake_sys_version" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL "-DLLVM_DIR=$llvm_dir" -DWASMEDGE_BUILD_PACKAGE="ZIP" .
cmake --build build
- name: Install Rust-nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- name: Rustfmt
run: cargo +nightly fmt --all -- --check
- name: Clippy
run: |
$vsPath = (vswhere -latest -property installationPath)
Import-Module (Join-Path $vsPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64 -winsdk=10.0.19041.0"
cargo +nightly clippy -V
cargo +nightly clippy --lib --examples --features aot,ffi -- -D warnings
- name: Install Rust-stable
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Test Rust Bindings
run: |
$vsPath = (vswhere -latest -property installationPath)
Import-Module (Join-Path $vsPath "Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation -DevCmdArguments "-arch=x64 -host_arch=x64 -winsdk=10.0.19041.0"
$env:Path="$env:Path;C:\Users\runneradmin\.rustup\toolchains\stable-x86_64-pc-windows-msvc\bin;D:\a\wasmedge-rust-sdk\wasmedge-rust-sdk\WasmEdge\build\lib\api"
cargo test --workspace --exclude async-wasi --features aot,ffi --locked -- --nocapture --test-threads=1