Skip to content

fix(cmake): remove unnecessary vix_json dependency from cache package… #12

fix(cmake): remove unnecessary vix_json dependency from cache package…

fix(cmake): remove unnecessary vix_json dependency from cache package… #12

name: Cache Strict CI
on:
push:
branches: [main, master, dev]
paths:
- ".github/workflows/cache-strict-ci.yml"
- "CMakeLists.txt"
- "cmake/**"
- "include/**"
- "src/**"
- "tests/**"
- "README.md"
- "CHANGELOG.md"
- "LICENSE"
- "vix.json"
pull_request:
branches: [main, master, dev]
paths:
- ".github/workflows/cache-strict-ci.yml"
- "CMakeLists.txt"
- "cmake/**"
- "include/**"
- "src/**"
- "tests/**"
- "README.md"
- "CHANGELOG.md"
- "LICENSE"
- "vix.json"
workflow_dispatch:
permissions:
contents: read
env:
DEPS: >
build-essential
cmake
ninja-build
clang
llvm
lld
g++
cppcheck
clang-tidy
valgrind
pkg-config
git
nlohmann-json3-dev
BUILD_JOBS: 2
VIX_GIT_BRANCH: dev
jobs:
build-test-sanitized:
name: Sanitized Build and Tests (${{ matrix.compiler }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
compiler: [clang, gcc]
steps:
- uses: actions/checkout@v4
- name: Fetch dependencies
run: |
rm -rf ../net ../json
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/net.git ../net
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json
- name: Verify dependencies
run: |
test -f ../net/CMakeLists.txt || exit 1
test -f ../json/CMakeLists.txt || exit 1
- name: Install deps
run: |
sudo apt-get update -y
sudo apt-get install -y $DEPS
- name: Select compiler
run: |
if [ "${{ matrix.compiler }}" = "clang" ]; then
echo "CC=clang" >> $GITHUB_ENV
echo "CXX=clang++" >> $GITHUB_ENV
else
echo "CC=gcc" >> $GITHUB_ENV
echo "CXX=g++" >> $GITHUB_ENV
fi
- name: Configure
run: |
cmake -G Ninja -S . -B build \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DVIX_CACHE_BUILD_TESTS=ON \
-DVIX_ENABLE_SANITIZERS=ON \
-DVIX_CACHE_FETCH_NET=OFF
- name: Build
run: cmake --build build -j${BUILD_JOBS}
- name: Run tests
run: ctest --test-dir build --output-on-failure
static-analysis:
name: Static Analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fetch dependencies
run: |
rm -rf ../net ../json
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/net.git ../net
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json
- name: Verify dependencies
run: |
test -f ../net/CMakeLists.txt || exit 1
test -f ../json/CMakeLists.txt || exit 1
- name: Install deps
run: |
sudo apt-get update -y
sudo apt-get install -y $DEPS
- name: Configure
run: |
cmake -G Ninja -S . -B build \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_BUILD_TYPE=Debug \
-DVIX_CACHE_BUILD_TESTS=ON \
-DVIX_CACHE_FETCH_NET=OFF
- name: clang-tidy
run: |
find src tests -name '*.cpp' | xargs -r clang-tidy -p build || true
- name: cppcheck
run: |
cppcheck \
--enable=all \
--std=c++20 \
--inconclusive \
--quiet \
--suppress=missingIncludeSystem \
include src tests || true
valgrind:
name: Valgrind
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fetch dependencies
run: |
rm -rf ../net ../json
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/net.git ../net
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json
- name: Verify dependencies
run: |
test -f ../net/CMakeLists.txt || exit 1
test -f ../json/CMakeLists.txt || exit 1
- name: Install deps
run: |
sudo apt-get update -y
sudo apt-get install -y $DEPS
- name: Configure
run: |
cmake -G Ninja -S . -B build \
-DCMAKE_BUILD_TYPE=Debug \
-DVIX_CACHE_BUILD_TESTS=ON \
-DVIX_CACHE_FETCH_NET=OFF
- name: Build
run: cmake --build build -j${BUILD_JOBS}
- name: Run valgrind
run: |
for exe in $(find build/tests -type f -executable); do
valgrind --leak-check=full "$exe" || true
done
package-smoke:
name: Package Smoke
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fetch dependencies
run: |
rm -rf ../net ../json
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/net.git ../net
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json
- name: Verify dependencies
run: |
test -f ../net/CMakeLists.txt || exit 1
test -f ../json/CMakeLists.txt || exit 1
- name: Install deps
run: |
sudo apt-get update -y
sudo apt-get install -y $DEPS
- name: Install json
run: |
cmake -S ../json -B ../json/build \
-DCMAKE_INSTALL_PREFIX=$PWD/stage
cmake --build ../json/build
cmake --install ../json/build
- name: Install net
run: |
cmake -S ../net -B ../net/build \
-DCMAKE_PREFIX_PATH=$PWD/stage \
-DCMAKE_INSTALL_PREFIX=$PWD/stage
cmake --build ../net/build
cmake --install ../net/build
- name: Install cache
run: |
cmake -S . -B build \
-DCMAKE_PREFIX_PATH=$PWD/stage \
-DCMAKE_INSTALL_PREFIX=$PWD/stage \
-DVIX_CACHE_FETCH_NET=OFF
cmake --build build
cmake --install build
- name: Smoke test
run: |
mkdir smoke
cat > smoke/CMakeLists.txt <<EOF
cmake_minimum_required(VERSION 3.20)
project(cache_smoke)
find_package(vix_cache CONFIG REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main PRIVATE vix::cache)
EOF
cat > smoke/main.cpp <<EOF
#include <iostream>
int main() { std::cout << "ok"; }
EOF
cmake -S smoke -B smoke/build -DCMAKE_PREFIX_PATH=$PWD/stage
cmake --build smoke/build
config-coverage:
name: Configuration Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fetch dependencies
run: |
rm -rf ../net ../json
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/net.git ../net
git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json
- name: Verify dependencies
run: |
test -f ../net/CMakeLists.txt || exit 1
test -f ../json/CMakeLists.txt || exit 1
- name: Install deps
run: |
sudo apt-get update -y
sudo apt-get install -y $DEPS
- name: Configure release mode
run: |
cmake -G Ninja -S . -B build-release \
-DCMAKE_BUILD_TYPE=Release \
-DVIX_CACHE_BUILD_TESTS=OFF \
-DVIX_CACHE_FETCH_NET=OFF
- name: Build release mode
run: |
cmake --build build-release -j${BUILD_JOBS}
- name: Configure debug mode
run: |
cmake -G Ninja -S . -B build-debug \
-DCMAKE_BUILD_TYPE=Debug \
-DVIX_CACHE_BUILD_TESTS=ON \
-DVIX_CACHE_FETCH_NET=OFF
- name: Build debug mode
run: |
cmake --build build-debug -j${BUILD_JOBS}
summary:
name: Summary
needs:
[
build-test-sanitized,
static-analysis,
valgrind,
package-smoke,
config-coverage,
]
runs-on: ubuntu-latest
steps:
- run: echo "Cache strict CI passed"