Merge pull request #337 from tari/emscripten-support #949
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: Build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04, macos-latest, windows-latest] | |
rust: [stable] | |
lua: [lua54, lua53, lua52, lua51, luajit, luau, luau-jit, luau-vector4] | |
include: | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build ${{ matrix.lua }} vendored | |
run: | | |
cargo build --features "${{ matrix.lua }},vendored" | |
cargo build --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot,unstable" | |
shell: bash | |
- name: Build ${{ matrix.lua }} pkg-config | |
if: ${{ matrix.os == 'ubuntu-22.04' }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends liblua5.4-dev liblua5.3-dev liblua5.2-dev liblua5.1-0-dev libluajit-5.1-dev | |
cargo build --features "${{ matrix.lua }}" | |
build_aarch64_cross_macos: | |
name: Cross-compile to aarch64-apple-darwin | |
runs-on: macos-latest | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51, luajit] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: aarch64-apple-darwin | |
- name: Cross-compile | |
run: cargo build --target aarch64-apple-darwin --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot,unstable" | |
build_aarch64_cross_ubuntu: | |
name: Cross-compile to aarch64-unknown-linux-gnu | |
runs-on: ubuntu-22.04 | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51, luajit] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: aarch64-unknown-linux-gnu | |
- name: Install ARM compiler toolchain | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu libc6-dev-arm64-cross | |
shell: bash | |
- name: Cross-compile | |
run: cargo build --target aarch64-unknown-linux-gnu --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot,unstable" | |
shell: bash | |
build_armv7_cross_ubuntu: | |
name: Cross-compile to armv7-unknown-linux-gnueabihf | |
runs-on: ubuntu-22.04 | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
target: armv7-unknown-linux-gnueabihf | |
- name: Install ARM compiler toolchain | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends gcc-arm-linux-gnueabihf libc-dev-armhf-cross | |
shell: bash | |
- name: Cross-compile | |
run: cargo build --target armv7-unknown-linux-gnueabihf --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot,unstable" | |
shell: bash | |
test: | |
name: Test | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-22.04, macos-latest, windows-latest] | |
rust: [stable, nightly] | |
lua: [lua54, lua53, lua52, lua51, luajit, luajit52, luau, luau-jit, luau-vector4] | |
include: | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run ${{ matrix.lua }} tests | |
run: | | |
cargo test --features "${{ matrix.lua }},vendored" | |
cargo test --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot" | |
cargo test --features "${{ matrix.lua }},vendored,async,serialize,macros,parking_lot,unstable" | |
shell: bash | |
- name: Run compile tests (macos lua54) | |
if: ${{ matrix.os == 'macos-latest' && matrix.lua == 'lua54' }} | |
run: | | |
TRYBUILD=overwrite cargo test --features "${{ matrix.lua }},vendored" -- --ignored | |
TRYBUILD=overwrite cargo test --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot,unstable" -- --ignored | |
shell: bash | |
test_with_sanitizer: | |
name: Test with address sanitizer | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
rust: [nightly] | |
lua: [lua54, lua53, lua52, lua51, luajit, luau, luau-jit, luau-vector4] | |
include: | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run ${{ matrix.lua }} tests with address sanitizer | |
run: | | |
cargo test --tests --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot,unstable" --target x86_64-unknown-linux-gnu -- --skip test_too_many_recursions | |
shell: bash | |
env: | |
RUSTFLAGS: -Z sanitizer=address | |
test_modules: | |
name: Test modules | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-22.04, macos-latest] | |
rust: [stable] | |
lua: [lua54, lua53, lua52, lua51, luajit, luau] | |
include: | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: ${{ matrix.rust }} | |
target: ${{ matrix.target }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run ${{ matrix.lua }} module tests | |
run: | | |
(cd tests/module && cargo build --release --features "${{ matrix.lua }}") | |
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }},vendored") | |
shell: bash | |
test_modules_windows: | |
name: Test modules on Windows | |
runs-on: windows-latest | |
needs: build | |
strategy: | |
matrix: | |
lua: [lua54, luajit] | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: msys2/setup-msys2@v2 | |
- uses: actions/checkout@v4 | |
- name: Install Rust & Lua | |
run: | | |
pacman -S --noconfirm mingw-w64-x86_64-rust mingw-w64-x86_64-lua mingw-w64-x86_64-luajit mingw-w64-x86_64-pkg-config | |
- name: Run ${{ matrix.lua }} module tests | |
run: | | |
(cd tests/module && cargo build --release --features "${{ matrix.lua }}") | |
(cd tests/module/loader && cargo test --release --features "${{ matrix.lua }}") | |
rustfmt: | |
name: Rustfmt | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
components: rustfmt | |
- run: cargo fmt -- --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
lua: [lua54, lua53, lua52, lua51, luajit, luau, luau-jit, luau-vector4] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: nightly | |
components: clippy | |
- uses: giraffate/clippy-action@v1 | |
with: | |
reporter: 'github-pr-review' | |
clippy_flags: --features "${{ matrix.lua }},vendored,async,send,serialize,macros,parking_lot,unstable" |