Skip to content

smoke

smoke #11

Workflow file for this run

name: smoke
on:
push:
branches:
- main
- master
pull_request:
workflow_dispatch:
concurrency:
group: smoke-${{ github.ref }}
cancel-in-progress: true
env:
BUILD_TYPE: Release
CMAKE_GENERATOR: Ninja
WEBVULKAN_CACHE_VERSION: v2
LLVM_PREBUILT_URL: ${{ vars.WEBVULKAN_LLVM_PREBUILT_URL }}
LLVM_PREBUILT_SHA256: ${{ vars.WEBVULKAN_LLVM_PREBUILT_SHA256 }}
jobs:
in_tree_add_subdirectory:
name: in-tree add_subdirectory
runs-on: ubuntu-latest
timeout-minutes: 240
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install host tools
run: |
sudo apt-get update
sudo apt-get install -y ninja-build flex bison python3-pip glslang-tools
python3 -m pip install --upgrade pip
python3 -m pip install cmake==4.2.0
- name: Restore third-party cache
id: cache_thirdparty
uses: actions/cache/restore@v4
with:
path: |
.3rdparty
key: ${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-${{ env.LLVM_PREBUILT_SHA256 }}
restore-keys: |
${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-
- name: Restore Mesa wasm build cache
id: cache_webvulkan_build
uses: actions/cache/restore@v4
with:
path: |
build/_webvulkan
build/.webvulkan_llvmpipe.stamp
key: ${{ runner.os }}-webvulkan-build-${{ env.WEBVULKAN_CACHE_VERSION }}-${{ hashFiles('CMakeLists.txt', 'cmake/BuildMesaLlvmpipeWasm.cmake', 'tests/CMakeLists.txt', 'tests/RunLavapipeRuntimeSmoke.cmake') }}-${{ env.LLVM_PREBUILT_SHA256 }}
restore-keys: |
${{ runner.os }}-webvulkan-build-${{ env.WEBVULKAN_CACHE_VERSION }}-
- name: Validate prebuilt LLVM settings
shell: bash
run: |
if [ -z "${LLVM_PREBUILT_URL}" ]; then
echo "WEBVULKAN_LLVM_PREBUILT_URL repository variable is required for CI"
exit 1
fi
- name: Configure root project
run: |
cmake -S . -B build -G "${CMAKE_GENERATOR}" \
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
-DWEBVULKAN_BUILD_TESTS=ON \
-DWEBVULKAN_ALLOW_DEP_UPDATES=OFF \
-DLLVM_PROVIDER=prebuilt \
-DLLVM_PREBUILT_URL="${LLVM_PREBUILT_URL}" \
-DLLVM_PREBUILT_SHA256="${LLVM_PREBUILT_SHA256}"
- name: Build and run in-tree smoke
run: |
cmake --build build --target runtime_smoke --config "${BUILD_TYPE}"
- name: Install relocatable package
run: |
cmake --install build --prefix "${GITHUB_WORKSPACE}/package"
- name: Upload relocatable package
uses: actions/upload-artifact@v4
with:
name: webvulkan-package
path: package
if-no-files-found: error
- name: Save Mesa wasm build cache
if: always() && steps.cache_webvulkan_build.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
build/_webvulkan
build/.webvulkan_llvmpipe.stamp
key: ${{ steps.cache_webvulkan_build.outputs.cache-primary-key }}
- name: Save third-party cache
if: always() && steps.cache_thirdparty.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
.3rdparty
key: ${{ steps.cache_thirdparty.outputs.cache-primary-key }}
package_sparse_tests:
name: package sparse-tests
runs-on: ubuntu-latest
timeout-minutes: 180
needs:
- in_tree_add_subdirectory
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
path: tests-only
sparse-checkout: |
tests
sparse-checkout-cone-mode: false
- name: Install host tools
run: |
sudo apt-get update
sudo apt-get install -y ninja-build python3-pip
python3 -m pip install --upgrade pip
python3 -m pip install cmake==4.2.0
- name: Restore third-party cache
id: cache_thirdparty
uses: actions/cache/restore@v4
with:
path: |
.3rdparty
key: ${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-${{ env.LLVM_PREBUILT_SHA256 }}
restore-keys: |
${{ runner.os }}-webvulkan-3rdparty-${{ env.WEBVULKAN_CACHE_VERSION }}-
- name: Download relocatable package
uses: actions/download-artifact@v4
with:
name: webvulkan-package
path: package
- name: Validate cached emsdk
shell: bash
run: |
if [ ! -x "${GITHUB_WORKSPACE}/.3rdparty/emsdk/upstream/emscripten/emcc" ]; then
echo "emsdk is missing in cache. Re-run workflow after in-tree job saves cache."
exit 1
fi
- name: Configure sparse tests against package
run: |
cmake -S tests-only/tests -B tests-only/build -G "${CMAKE_GENERATOR}" \
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
-DWEBVULKAN_TEST_MODE=package \
-DWEBVULKAN_TEST_PACKAGE_PREFIX="${GITHUB_WORKSPACE}/package" \
-DEMSDK_ROOT="${GITHUB_WORKSPACE}/.3rdparty/emsdk" \
-DWEBVULKAN_EMSCRIPTEN_TOOLCHAIN_FILE="${GITHUB_WORKSPACE}/.3rdparty/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
- name: Build and run package smoke
run: |
cmake --build tests-only/build --target runtime_smoke --config "${BUILD_TYPE}"