name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: | apt-get update -qq # Try clang-15+ first (Ubuntu 22.04+) if apt-cache show clang-18 >/dev/null 2>&1; then apt-get install -y -qq clang-18 ninja-build curl elif apt-cache show clang-17 >/dev/null 2>&1; then apt-get install -y -qq clang-17 ninja-build curl elif apt-cache show clang-16 >/dev/null 2>&1; then apt-get install -y -qq clang-16 ninja-build curl elif apt-cache show clang-15 >/dev/null 2>&1; then apt-get install -y -qq clang-15 ninja-build curl else # Ubuntu 20.04: install from LLVM repo apt-get install -y -qq wget lsb-release wget -qO- https://apt.llvm.org/llvm.sh | bash -s -- 18 apt-get install -y -qq ninja-build curl fi - name: Install CMake 3.28 run: | curl -sL https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-linux-x86_64.tar.gz | tar xz -C /usr/local --strip-components=1 cmake --version - name: Build kappa run: | CC=$(ls /usr/bin/clang-1[5-9] /usr/bin/clang-2[0-9] 2>/dev/null | head -1) if [ -z "$CC" ]; then CC=/usr/bin/clang-18; fi CXX="${CC}++" cmake -B build -G Ninja \ -DCMAKE_C_COMPILER="$CC" \ -DCMAKE_CXX_COMPILER="$CXX" cmake --build build - name: DSL and CLI tests run: ./test.sh - name: Init-switching tests run: ./test-init-switch.sh - name: Comprehensive tests run: ./test-full.sh