CI #46
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: | |
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: Build image | |
run: docker build --platform linux/${{matrix.arch}} -t wabt -f scripts/Dockerfile . | |
- name: Unit tests | |
run: docker run --rm -t wabt cmake --build build --target run-unittests | |
- name: C API tests | |
if: ${{ matrix.arch != 's390x' }} | |
run: docker run --rm -t wabt cmake --build build --target run-c-api-tests | |
- name: Tests | |
run: docker run --rm -t wabt cmake --build build --target run-tests |