fix(websocket): align tests and correct protocol edge cases #66
This file contains hidden or 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: WebSocket Strict CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - master | |
| - dev | |
| - release/** | |
| paths: | |
| - ".github/workflows/websocket-strict-ci.yml" | |
| - "CMakeLists.txt" | |
| - "include/**" | |
| - "src/**" | |
| - "examples/**" | |
| - "config/**" | |
| - "docs/**" | |
| - "scripts/**" | |
| - "README.md" | |
| - "CHANGELOG.md" | |
| - "vix.json" | |
| pull_request: | |
| branches: | |
| - main | |
| - master | |
| - dev | |
| - release/** | |
| paths: | |
| - ".github/workflows/websocket-strict-ci.yml" | |
| - "CMakeLists.txt" | |
| - "include/**" | |
| - "src/**" | |
| - "examples/**" | |
| - "config/**" | |
| - "docs/**" | |
| - "scripts/**" | |
| - "README.md" | |
| - "CHANGELOG.md" | |
| - "vix.json" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| env: | |
| BUILD_JOBS: 2 | |
| VIX_GIT_BRANCH: dev | |
| jobs: | |
| build: | |
| name: Build WebSocket (${{ matrix.compiler }}, json=${{ matrix.json_mode }}, examples=${{ matrix.examples }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| compiler: | |
| - gcc | |
| - clang | |
| json_mode: | |
| - AUTO | |
| - OFF | |
| examples: | |
| - ON | |
| - OFF | |
| steps: | |
| - name: Checkout websocket repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| cmake \ | |
| ninja-build \ | |
| clang \ | |
| g++ \ | |
| pkg-config \ | |
| git \ | |
| curl \ | |
| ca-certificates \ | |
| sqlite3 \ | |
| libsqlite3-dev \ | |
| libasio-dev \ | |
| nlohmann-json3-dev \ | |
| libspdlog-dev \ | |
| libfmt-dev \ | |
| libssl-dev | |
| - 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: Fetch sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| rm -rf \ | |
| ../error \ | |
| ../path \ | |
| ../env \ | |
| ../utils \ | |
| ../async \ | |
| ../io \ | |
| ../json \ | |
| ../template \ | |
| ../core | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/error.git ../error | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/path.git ../path | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/env.git ../env | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/utils.git ../utils | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" --recurse-submodules https://github.com/vixcpp/async.git ../async | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/io.git ../io | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/template.git ../template || true | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/core.git ../core | |
| git -C ../async submodule update --init --recursive --depth 1 || true | |
| - name: Prepare Asio for async | |
| run: | | |
| set -euxo pipefail | |
| mkdir -p ../async/third_party/asio | |
| rm -rf ../async/third_party/asio/include | |
| mkdir -p ../async/third_party/asio/include | |
| cp -r /usr/include/asio* ../async/third_party/asio/include/ || true | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Verify required sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| test -f ../error/CMakeLists.txt | |
| test -f ../path/CMakeLists.txt | |
| test -f ../env/CMakeLists.txt | |
| test -f ../utils/CMakeLists.txt | |
| test -f ../async/CMakeLists.txt | |
| test -f ../io/CMakeLists.txt | |
| test -f ../json/CMakeLists.txt | |
| test -f ../core/CMakeLists.txt | |
| test -f ../json/include/vix/json/Simple.hpp | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Export dependency include paths | |
| run: | | |
| EXTRA_PATHS="$GITHUB_WORKSPACE/../error/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../path/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../env/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../utils/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../async/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../io/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../json/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../core/include" | |
| if [ -d "$GITHUB_WORKSPACE/../template/include" ]; then | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../template/include" | |
| fi | |
| echo "CPATH=$EXTRA_PATHS${CPATH:+:$CPATH}" >> "$GITHUB_ENV" | |
| echo "CPLUS_INCLUDE_PATH=$EXTRA_PATHS${CPLUS_INCLUDE_PATH:+:$CPLUS_INCLUDE_PATH}" >> "$GITHUB_ENV" | |
| - name: Configure | |
| run: | | |
| cmake -S . -B build -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | |
| -DVIX_ENABLE_SANITIZERS=OFF \ | |
| -DVIX_WEBSOCKET_WITH_JSON=${{ matrix.json_mode }} \ | |
| -DVIX_WEBSOCKET_BUILD_EXAMPLES=${{ matrix.examples }} \ | |
| -DVIX_WEBSOCKET_FETCH_CORE=OFF \ | |
| -DVIX_WEBSOCKET_FETCH_UTILS=OFF \ | |
| -DVIX_CORE_WITH_OPENSSL=OFF \ | |
| -DVIX_CORE_WITH_TEMPLATE=AUTO \ | |
| -DVIX_CORE_WITH_MYSQL=OFF | |
| - name: Build | |
| run: | | |
| cmake --build build -j"${BUILD_JOBS}" | |
| - name: Print executables | |
| run: | | |
| find build -type f -executable | sort || true | |
| sqlite-check: | |
| name: SQLite Storage Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout websocket repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| cmake \ | |
| ninja-build \ | |
| g++ \ | |
| pkg-config \ | |
| git \ | |
| curl \ | |
| ca-certificates \ | |
| sqlite3 \ | |
| libsqlite3-dev \ | |
| libasio-dev \ | |
| nlohmann-json3-dev \ | |
| libspdlog-dev \ | |
| libfmt-dev \ | |
| libssl-dev | |
| - name: Fetch sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| rm -rf \ | |
| ../error \ | |
| ../path \ | |
| ../env \ | |
| ../utils \ | |
| ../async \ | |
| ../io \ | |
| ../json \ | |
| ../template \ | |
| ../core | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/error.git ../error | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/path.git ../path | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/env.git ../env | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/utils.git ../utils | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" --recurse-submodules https://github.com/vixcpp/async.git ../async | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/io.git ../io | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/template.git ../template || true | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/core.git ../core | |
| git -C ../async submodule update --init --recursive --depth 1 || true | |
| - name: Prepare Asio for async | |
| run: | | |
| set -euxo pipefail | |
| mkdir -p ../async/third_party/asio | |
| rm -rf ../async/third_party/asio/include | |
| mkdir -p ../async/third_party/asio/include | |
| cp -r /usr/include/asio* ../async/third_party/asio/include/ || true | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Verify required sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| test -f ../error/CMakeLists.txt | |
| test -f ../path/CMakeLists.txt | |
| test -f ../env/CMakeLists.txt | |
| test -f ../utils/CMakeLists.txt | |
| test -f ../async/CMakeLists.txt | |
| test -f ../io/CMakeLists.txt | |
| test -f ../json/CMakeLists.txt | |
| test -f ../core/CMakeLists.txt | |
| test -f ../json/include/vix/json/Simple.hpp | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Export dependency include paths | |
| run: | | |
| EXTRA_PATHS="$GITHUB_WORKSPACE/../error/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../path/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../env/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../utils/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../async/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../io/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../json/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../core/include" | |
| if [ -d "$GITHUB_WORKSPACE/../template/include" ]; then | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../template/include" | |
| fi | |
| echo "CPATH=$EXTRA_PATHS${CPATH:+:$CPATH}" >> "$GITHUB_ENV" | |
| echo "CPLUS_INCLUDE_PATH=$EXTRA_PATHS${CPLUS_INCLUDE_PATH:+:$CPLUS_INCLUDE_PATH}" >> "$GITHUB_ENV" | |
| - name: Configure SQLite build | |
| run: | | |
| cmake -S . -B build-sqlite -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DVIX_ENABLE_SANITIZERS=OFF \ | |
| -DVIX_WEBSOCKET_WITH_JSON=OFF \ | |
| -DVIX_WEBSOCKET_BUILD_EXAMPLES=ON \ | |
| -DVIX_WEBSOCKET_FETCH_CORE=OFF \ | |
| -DVIX_WEBSOCKET_FETCH_UTILS=OFF \ | |
| -DVIX_CORE_WITH_OPENSSL=OFF \ | |
| -DVIX_CORE_WITH_TEMPLATE=AUTO \ | |
| -DVIX_CORE_WITH_MYSQL=OFF | |
| - name: Build SQLite build | |
| run: | | |
| cmake --build build-sqlite -j"${BUILD_JOBS}" | |
| - name: Run SQLite-related smoke checks | |
| shell: bash | |
| run: | | |
| set +e | |
| rm -rf .ci-tmp | |
| mkdir -p .ci-tmp | |
| mapfile -t CANDIDATES < <( | |
| find build-sqlite -type f -executable | while read -r exe; do | |
| base="$(basename "$exe")" | |
| if [[ ! "$exe" =~ /CMakeFiles/ ]] && [[ "$base" =~ (chat|server|ws|websocket|poll|client) ]]; then | |
| echo "$exe" | |
| fi | |
| done | sort -u | |
| ) | |
| if [ ${#CANDIDATES[@]} -eq 0 ]; then | |
| echo "No SQLite-related executable candidates found." | |
| exit 0 | |
| fi | |
| for exe in "${CANDIDATES[@]}"; do | |
| echo "==> SQLite smoke: $exe" | |
| ( | |
| cd .ci-tmp | |
| timeout 5s "$GITHUB_WORKSPACE/$exe" >/tmp/websocket_sqlite.log 2>&1 | |
| ) | |
| STATUS=$? | |
| cat /tmp/websocket_sqlite.log || true | |
| if [ $STATUS -ne 0 ] && [ $STATUS -ne 124 ]; then | |
| echo "::warning::SQLite smoke reported issues for $exe" | |
| fi | |
| done | |
| find .ci-tmp -maxdepth 2 -type f | sort || true | |
| exit 0 | |
| static-analysis: | |
| name: Static Analysis | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout websocket repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| cmake \ | |
| ninja-build \ | |
| clang \ | |
| g++ \ | |
| cppcheck \ | |
| clang-tidy \ | |
| pkg-config \ | |
| git \ | |
| curl \ | |
| ca-certificates \ | |
| sqlite3 \ | |
| libsqlite3-dev \ | |
| libasio-dev \ | |
| nlohmann-json3-dev \ | |
| libspdlog-dev \ | |
| libfmt-dev \ | |
| libssl-dev | |
| - name: Fetch sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| rm -rf \ | |
| ../error \ | |
| ../path \ | |
| ../env \ | |
| ../utils \ | |
| ../async \ | |
| ../io \ | |
| ../json \ | |
| ../template \ | |
| ../core | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/error.git ../error | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/path.git ../path | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/env.git ../env | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/utils.git ../utils | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" --recurse-submodules https://github.com/vixcpp/async.git ../async | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/io.git ../io | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/template.git ../template || true | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/core.git ../core | |
| git -C ../async submodule update --init --recursive --depth 1 || true | |
| - name: Prepare Asio for async | |
| run: | | |
| set -euxo pipefail | |
| mkdir -p ../async/third_party/asio | |
| rm -rf ../async/third_party/asio/include | |
| mkdir -p ../async/third_party/asio/include | |
| cp -r /usr/include/asio* ../async/third_party/asio/include/ || true | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Verify required sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| test -f ../error/CMakeLists.txt | |
| test -f ../path/CMakeLists.txt | |
| test -f ../env/CMakeLists.txt | |
| test -f ../utils/CMakeLists.txt | |
| test -f ../async/CMakeLists.txt | |
| test -f ../io/CMakeLists.txt | |
| test -f ../json/CMakeLists.txt | |
| test -f ../core/CMakeLists.txt | |
| test -f ../json/include/vix/json/Simple.hpp | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Export dependency include paths | |
| run: | | |
| EXTRA_PATHS="$GITHUB_WORKSPACE/../error/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../path/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../env/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../utils/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../async/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../io/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../json/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../core/include" | |
| if [ -d "$GITHUB_WORKSPACE/../template/include" ]; then | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../template/include" | |
| fi | |
| echo "CPATH=$EXTRA_PATHS${CPATH:+:$CPATH}" >> "$GITHUB_ENV" | |
| echo "CPLUS_INCLUDE_PATH=$EXTRA_PATHS${CPLUS_INCLUDE_PATH:+:$CPLUS_INCLUDE_PATH}" >> "$GITHUB_ENV" | |
| - name: Configure for analysis | |
| run: | | |
| cmake -S . -B build-analyze -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | |
| -DVIX_ENABLE_SANITIZERS=OFF \ | |
| -DVIX_WEBSOCKET_WITH_JSON=AUTO \ | |
| -DVIX_WEBSOCKET_BUILD_EXAMPLES=ON \ | |
| -DVIX_WEBSOCKET_FETCH_CORE=OFF \ | |
| -DVIX_WEBSOCKET_FETCH_UTILS=OFF \ | |
| -DVIX_CORE_WITH_OPENSSL=OFF \ | |
| -DVIX_CORE_WITH_TEMPLATE=AUTO \ | |
| -DVIX_CORE_WITH_MYSQL=OFF | |
| - name: Run clang-tidy | |
| run: | | |
| set +e | |
| find src examples -name '*.cpp' -print0 | xargs -0 -r -n1 -P2 clang-tidy -p build-analyze | |
| exit 0 | |
| - name: Run cppcheck | |
| run: | | |
| set +e | |
| cppcheck \ | |
| --enable=all \ | |
| --std=c++20 \ | |
| --inconclusive \ | |
| --quiet \ | |
| --suppress=missingIncludeSystem \ | |
| include/ src/ examples/ | |
| exit 0 | |
| config-coverage: | |
| name: Configuration Coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout websocket repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| cmake \ | |
| ninja-build \ | |
| g++ \ | |
| pkg-config \ | |
| git \ | |
| curl \ | |
| ca-certificates \ | |
| sqlite3 \ | |
| libsqlite3-dev \ | |
| libasio-dev \ | |
| nlohmann-json3-dev \ | |
| libspdlog-dev \ | |
| libfmt-dev \ | |
| libssl-dev | |
| - name: Fetch sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| rm -rf \ | |
| ../error \ | |
| ../path \ | |
| ../env \ | |
| ../utils \ | |
| ../async \ | |
| ../io \ | |
| ../json \ | |
| ../template \ | |
| ../core | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/error.git ../error | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/path.git ../path | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/env.git ../env | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/utils.git ../utils | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" --recurse-submodules https://github.com/vixcpp/async.git ../async | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/io.git ../io | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/json.git ../json | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/template.git ../template || true | |
| git clone --depth 1 --branch "${VIX_GIT_BRANCH}" https://github.com/vixcpp/core.git ../core | |
| git -C ../async submodule update --init --recursive --depth 1 || true | |
| - name: Prepare Asio for async | |
| run: | | |
| set -euxo pipefail | |
| mkdir -p ../async/third_party/asio | |
| rm -rf ../async/third_party/asio/include | |
| mkdir -p ../async/third_party/asio/include | |
| cp -r /usr/include/asio* ../async/third_party/asio/include/ || true | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Verify required sibling dependencies | |
| run: | | |
| set -euxo pipefail | |
| test -f ../error/CMakeLists.txt | |
| test -f ../path/CMakeLists.txt | |
| test -f ../env/CMakeLists.txt | |
| test -f ../utils/CMakeLists.txt | |
| test -f ../async/CMakeLists.txt | |
| test -f ../io/CMakeLists.txt | |
| test -f ../json/CMakeLists.txt | |
| test -f ../core/CMakeLists.txt | |
| test -f ../json/include/vix/json/Simple.hpp | |
| test -f ../async/third_party/asio/include/asio.hpp | |
| - name: Export dependency include paths | |
| run: | | |
| EXTRA_PATHS="$GITHUB_WORKSPACE/../error/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../path/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../env/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../utils/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../async/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../io/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../json/include" | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../core/include" | |
| if [ -d "$GITHUB_WORKSPACE/../template/include" ]; then | |
| EXTRA_PATHS="$EXTRA_PATHS:$GITHUB_WORKSPACE/../template/include" | |
| fi | |
| echo "CPATH=$EXTRA_PATHS${CPATH:+:$CPATH}" >> "$GITHUB_ENV" | |
| echo "CPLUS_INCLUDE_PATH=$EXTRA_PATHS${CPLUS_INCLUDE_PATH:+:$CPLUS_INCLUDE_PATH}" >> "$GITHUB_ENV" | |
| - name: Configure release mode with JSON AUTO | |
| run: | | |
| cmake -S . -B build-release-auto -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DVIX_ENABLE_SANITIZERS=OFF \ | |
| -DVIX_WEBSOCKET_WITH_JSON=AUTO \ | |
| -DVIX_WEBSOCKET_BUILD_EXAMPLES=ON \ | |
| -DVIX_WEBSOCKET_FETCH_CORE=OFF \ | |
| -DVIX_WEBSOCKET_FETCH_UTILS=OFF \ | |
| -DVIX_CORE_WITH_OPENSSL=OFF \ | |
| -DVIX_CORE_WITH_TEMPLATE=AUTO \ | |
| -DVIX_CORE_WITH_MYSQL=OFF | |
| - name: Build release mode with JSON AUTO | |
| run: | | |
| cmake --build build-release-auto -j"${BUILD_JOBS}" | |
| - name: Configure release mode with JSON OFF | |
| run: | | |
| cmake -S . -B build-release-off -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DVIX_ENABLE_SANITIZERS=OFF \ | |
| -DVIX_WEBSOCKET_WITH_JSON=OFF \ | |
| -DVIX_WEBSOCKET_BUILD_EXAMPLES=OFF \ | |
| -DVIX_WEBSOCKET_FETCH_CORE=OFF \ | |
| -DVIX_WEBSOCKET_FETCH_UTILS=OFF \ | |
| -DVIX_CORE_WITH_OPENSSL=OFF \ | |
| -DVIX_CORE_WITH_TEMPLATE=AUTO \ | |
| -DVIX_CORE_WITH_MYSQL=OFF | |
| - name: Build release mode with JSON OFF | |
| run: | | |
| cmake --build build-release-off -j"${BUILD_JOBS}" | |
| summary: | |
| name: WebSocket Strict CI Summary | |
| needs: | |
| - build | |
| - sqlite-check | |
| - static-analysis | |
| - config-coverage | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Print summary | |
| run: | | |
| echo "WebSocket strict CI completed." | |
| echo "- gcc and clang builds" | |
| echo "- JSON AUTO and OFF builds" | |
| echo "- examples ON and OFF builds" | |
| echo "- SQLite smoke check" | |
| echo "- static analysis" | |
| echo "- release configuration coverage" |