Skip to content

CI

CI #49

Workflow file for this run

name: CI
on:
create:
tags:
push:
branches:
- main
pull_request:
jobs:
lint:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
- name: install tools
run: |
pip3 install flake8==3.7.8
sudo apt-get install clang-format
- run: flake8
- run: ./scripts/clang-format-diff.sh
env:
GITHUB_EVENT_BEFORE: ${{ github.event.before }}
build:
name: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-12, windows-latest]
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- name: install ninja (linux)
run: sudo apt-get install ninja-build
if: matrix.os == 'ubuntu-latest'
- name: install ninja (osx)
run: brew install ninja
if: matrix.os == 'macos-12'
- name: install ninja (win)
run: choco install ninja
if: matrix.os == 'windows-latest'
- name: mkdir
run: mkdir -p out
- name: cmake
run: cmake .. -G Ninja -DWITH_WASI=ON -DWERROR=ON -Werror=dev -Wno-deprecated
working-directory: out
if: matrix.os != 'windows-latest'
- name: cmake (windows)
run: cmake .. -DWERROR=ON -Werror=dev
working-directory: out
if: matrix.os == 'windows-latest'
- name: build
run: cmake --build out
- name: check if generated files are up-to-date
run: python ./scripts/check_clean.py
- name: unittests
run: cmake --build out --target run-unittests
- name: c-api-tests
run: cmake --build out --target run-c-api-tests
- name: tests
run: cmake --build out --target run-tests
emscripten:
name: emscripten
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: build
run: |
docker run -di --name emscripten -v $(pwd):/src emscripten/emsdk:latest bash
docker exec emscripten emcc -v
docker exec emscripten emcmake cmake .
docker exec emscripten make -j 2 VERBOSE=1
wasi:
name: wasi
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: build-tools
run: |
docker run -di --name wasi-sdk -v $(pwd):/src --workdir /src ghcr.io/webassembly/wasi-sdk:wasi-sdk-20 bash
docker exec wasi-sdk cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DBUILD_TESTS=0 -DBUILD_LIBWASM=0
docker exec wasi-sdk cmake --build out --config Release --target install
- uses: ./.github/actions/release-archive
with:
os: wasi
sanitize:
name: sanitize
runs-on: ubuntu-latest
env:
USE_NINJA: "1"
CC: "clang"
WASM2C_CFLAGS: "-march=x86-64-v2" # currently required for SIMDe to pass some tests on x86-64
strategy:
matrix:
sanitizer: [asan, ubsan, fuzz]
type: [debug, release]
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- run: sudo apt-get install ninja-build
- run: make clang-${{ matrix.type }}-${{ matrix.sanitizer }}
- if: ${{ matrix.sanitizer }} != fuzz
run: make test-clang-${{ matrix.type }}-${{ matrix.sanitizer }}
build-wasm2c-memchecked:
name: wasm2c-memchecked
runs-on: ubuntu-latest
env:
USE_NINJA: "1"
CC: "clang" # used by the wasm2c tests
WASM2C_CFLAGS: "-march=x86-64-v2 -fsanitize=address -DWASM_RT_USE_MMAP=0"
steps:
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- uses: actions/checkout@v1
with:
submodules: true
- run: sudo apt-get install ninja-build
- run: make clang-debug-asan
- run: make test-clang-debug-asan
build-min-cmake:
name: min-cmake
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
submodules: true
- uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: Install Ninja
run: sudo apt-get install ninja-build
- name: Detect minimum CMake version
run: >
awk 'match($0, /cmake_minimum_required\(VERSION *([0-9]+\.[0-9]+)\)/, a)
{ print "WABT_CMAKE_VER=" a[1]; exit; }' CMakeLists.txt | tee $GITHUB_ENV
- name: Install minimum CMake
run: |
python -m pip install -U setuptools wheel pip
python -m pip install "cmake==${WABT_CMAKE_VER}.*"
cmake --version
- name: Configure WABT
run: cmake -G Ninja -S . -B out -DCMAKE_BUILD_TYPE=Release
- name: build
run: cmake --build out
- name: unittests
run: cmake --build out --target run-unittests
- name: c-api-tests
run: cmake --build out --target run-c-api-tests
- name: tests
run: cmake --build out --target run-tests
build-arch:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch: [s390x, i386]
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: ${{matrix.arch}}
- name: Install distcc
run: sudo apt-get install distcc
- name: Install cross-compiler (s390x)
run: sudo apt-get install g++-s390x-linux-gnu
if: ${{ matrix.arch == 's390x' }}
- name: Install cross-compiler (i686)
run: sudo apt-get install g++-i686-linux-gnu
if: ${{ matrix.arch == 'i386' }}
- name: Start distcc
run: distcc --daemon
- name: Build image (s390x)
run: docker build --platform linux/${{matrix.arch}} -t --net=host --build-arg=COMPILER_ARCH=s390x-linux-gnu wabt -f scripts/Dockerfile .
if: ${{ matrix.arch == 's390x' }}
- name: Build image (i386)
run: docker build --platform linux/${{matrix.arch}} -t --net=host --build-arg=COMPILER_ARCH=i686-linux-gnu wabt -f scripts/Dockerfile .
if: ${{ matrix.arch == 'i386' }}
- name: Unit tests
run: docker run --rm -t --net=host wabt cmake --build build --target run-unittests
- name: C API tests
if: ${{ matrix.arch != 's390x' }}
run: docker run --rm -t --net=host wabt cmake --build build --target run-c-api-tests
- name: Tests
run: docker run --rm -t --net=host wabt cmake --build build --target run-tests