Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9428c5c
chore(release): prepare SDK packaging for v2.5.3
GaspardKirira May 4, 2026
abebe6e
fix(sdk): split release packages and export SQLite deps correctly
GaspardKirira May 4, 2026
845d499
release: prepare v2.5.3
GaspardKirira May 5, 2026
9fcd0bc
chore: update CLI module for v2.5.3
GaspardKirira May 6, 2026
a8eb24b
Update v2.5.3 changelog and CLI diagnostics
GaspardKirira May 6, 2026
5880320
update v2.5.3 changelog for core JSON API alignment
GaspardKirira May 6, 2026
eada80a
docs: update changelog for CLI build graph
GaspardKirira May 6, 2026
f8cadad
Fix FetchContent command casing
GaspardKirira May 6, 2026
34927e0
Move threadpool into standalone module
GaspardKirira May 6, 2026
3066939
chore(submodules): track threadpool dev branch
GaspardKirira May 6, 2026
959a604
feat(threadpool): integrate module into Vix umbrella
GaspardKirira May 6, 2026
87f5d7e
chore(release): update core and threadpool submodules
GaspardKirira May 6, 2026
951d2b1
Update v2.5.3 build graph changelog
GaspardKirira May 7, 2026
6aff56a
Polish CLI build output
GaspardKirira May 7, 2026
039e43a
Update changelog for dev mode improvements
GaspardKirira May 7, 2026
9cc20aa
Add kv module and update cli submodule
GaspardKirira May 8, 2026
3a5124c
Integrate kv module into umbrella build
GaspardKirira May 8, 2026
5a582eb
document kv module integration
GaspardKirira May 8, 2026
8f2de06
Update kv submodule
GaspardKirira May 8, 2026
1d642dc
Replace repository docs with site documentation
GaspardKirira May 8, 2026
3ce8228
Update changelog for vix tests improvements
GaspardKirira May 8, 2026
047e809
Update changelog for vix check improvements
GaspardKirira May 8, 2026
697c2f2
chore(release): prepare v2.5.3
GaspardKirira May 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
270 changes: 158 additions & 112 deletions .github/workflows/sdk-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
workflow_dispatch:
inputs:
tag:
description: "Optional tag to build/release (e.g. v2.1.10). If empty, uses the current ref."
description: "Optional tag to build/release (e.g. v2.5.3). If empty, uses the current ref."
required: false
default: ""

Expand All @@ -20,22 +20,35 @@ concurrency:

jobs:
build-sdk:
name: build-sdk (${{ matrix.sdkos }} / ${{ matrix.arch }})
name: build-sdk (${{ matrix.variant }} / linux / x86_64)

strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
- variant: core
os: ubuntu-24.04
sdkos: linux
arch: x86_64
asset: vix-sdk-linux-x86_64.tar.gz
install_dir: install-core
build_dir: build-core

- os: macos-14
sdkos: macos
arch: aarch64
- variant: db
os: ubuntu-24.04
sdkos: linux
arch: x86_64
asset: vix-sdk-db-linux-x86_64.tar.gz
install_dir: install-db
build_dir: build-db

- os: windows-2022
sdkos: windows
- variant: full
os: ubuntu-24.04
sdkos: linux
arch: x86_64
asset: vix-sdk-full-linux-x86_64.tar.gz
install_dir: install-full
build_dir: build-full

runs-on: ${{ matrix.os }}

Expand All @@ -58,10 +71,10 @@ jobs:
uses: lukka/get-cmake@latest

- name: Install deps (Linux)
if: runner.os == 'Linux'
shell: bash
run: |
set -euxo pipefail

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
Expand All @@ -72,151 +85,173 @@ jobs:
curl \
unzip \
zip \
tar \
nlohmann-json3-dev \
libssl-dev \
zlib1g-dev \
libsqlite3-dev \
libbrotli-dev \
libspdlog-dev \
libfmt-dev

- name: Install deps (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
set -euxo pipefail
brew update
brew install cmake ninja pkg-config openssl@3 spdlog fmt nlohmann-json sqlite brotli

- name: Setup vcpkg (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
git clone https://github.com/microsoft/vcpkg $env:GITHUB_WORKSPACE\vcpkg
"VCPKG_ROOT=$env:GITHUB_WORKSPACE\vcpkg" | Out-File -FilePath $env:GITHUB_ENV -Append
cd $env:GITHUB_WORKSPACE\vcpkg
.\bootstrap-vcpkg.bat

- name: Vcpkg install (manifest, Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Write-Host "VCPKG_ROOT=$env:VCPKG_ROOT"
cd $env:GITHUB_WORKSPACE

& "$env:VCPKG_ROOT\vcpkg.exe" install --triplet x64-windows --x-manifest-root "$env:GITHUB_WORKSPACE"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
libfmt-dev \
libmysqlcppconn-dev

- name: Configure (Unix)
if: runner.os != 'Windows'
- name: Configure SDK
shell: bash
run: |
set -euxo pipefail

CMAKE_ARGS=(
-S . -B build -G Ninja
COMMON_ARGS=(
-S .
-B "${{ matrix.build_dir }}"
-G Ninja
-DCMAKE_BUILD_TYPE=Release
-DVIX_ENABLE_INSTALL=ON
-DVIX_DB_USE_MYSQL=OFF
-DVIX_CORE_WITH_MYSQL=OFF
-DVIX_ENABLE_HTTP_COMPRESSION=OFF
-DCMAKE_INSTALL_PREFIX="${GITHUB_WORKSPACE}/install"
-DVIX_BUILD_EXAMPLES=OFF
-DVIX_BUILD_TESTS=OFF
-DVIX_TIME_BUILD_TESTS=OFF
-DVIX_TIME_BUILD_BENCH=OFF
-DVIX_TEMPLATE_BUILD_TESTS=OFF
-DVIX_TEMPLATE_BUILD_EXAMPLES=OFF
-DVIX_TEMPLATE_BUILD_BENCH=OFF
-DCMAKE_INSTALL_PREFIX="${GITHUB_WORKSPACE}/${{ matrix.install_dir }}"
)

if [ "${{ runner.os }}" = "macOS" ]; then
if command -v brew >/dev/null 2>&1; then
BREW_SSL="$(brew --prefix openssl@3 2>/dev/null || true)"
if [ -n "$BREW_SSL" ] && [ -d "$BREW_SSL" ]; then
CMAKE_ARGS+=(-DOPENSSL_ROOT_DIR="$BREW_SSL")
CMAKE_ARGS+=(-DCMAKE_PREFIX_PATH="$(brew --prefix)")
fi
fi
if [ "${{ matrix.variant }}" = "core" ]; then
cmake "${COMMON_ARGS[@]}" \
-DVIX_ENABLE_DB=OFF \
-DVIX_ENABLE_ORM=OFF \
-DVIX_ENABLE_WEBSOCKET=OFF \
-DVIX_DB_USE_SQLITE=OFF \
-DVIX_DB_USE_MYSQL=OFF \
-DVIX_DB_USE_POSTGRES=OFF \
-DVIX_DB_USE_REDIS=OFF \
-DVIX_CORE_WITH_MYSQL=OFF \
-DVIX_ENABLE_HTTP_COMPRESSION=OFF
fi

if [ "${{ matrix.variant }}" = "db" ]; then
cmake "${COMMON_ARGS[@]}" \
-DVIX_ENABLE_DB=ON \
-DVIX_ENABLE_ORM=OFF \
-DVIX_DB_USE_SQLITE=ON \
-DVIX_DB_USE_MYSQL=ON \
-DVIX_DB_USE_POSTGRES=OFF \
-DVIX_DB_USE_REDIS=OFF \
-DVIX_CORE_WITH_MYSQL=OFF \
-DVIX_ENABLE_HTTP_COMPRESSION=OFF
fi

cmake "${CMAKE_ARGS[@]}"
if [ "${{ matrix.variant }}" = "full" ]; then
cmake "${COMMON_ARGS[@]}" \
-DVIX_ENABLE_DB=ON \
-DVIX_ENABLE_ORM=ON \
-DVIX_DB_USE_SQLITE=ON \
-DVIX_DB_USE_MYSQL=ON \
-DVIX_DB_USE_POSTGRES=OFF \
-DVIX_DB_USE_REDIS=OFF \
-DVIX_CORE_WITH_MYSQL=OFF \
-DVIX_ENABLE_HTTP_COMPRESSION=ON \
-DVIX_ENABLE_WEBSOCKET=ON \
-DVIX_ENABLE_CLI=ON \
-DVIX_ENABLE_MIDDLEWARE=ON \
-DVIX_ENABLE_P2P=ON \
-DVIX_ENABLE_P2P_HTTP=ON \
-DVIX_ENABLE_CACHE=ON \
-DVIX_ENABLE_ASYNC=ON \
-DVIX_ENABLE_VALIDATION=ON \
-DVIX_ENABLE_CRYPTO=ON \
-DVIX_ENABLE_WEBRPC=ON \
-DVIX_ENABLE_TIME=ON \
-DVIX_ENABLE_TESTS_MODULE=ON \
-DVIX_ENABLE_TEMPLATE=ON \
-DVIX_ENABLE_PROCESS=ON
fi

- name: Build (Unix)
if: runner.os != 'Windows'
- name: Build SDK
shell: bash
run: |
set -euxo pipefail
cmake --build build -j2
cmake --build "${{ matrix.build_dir }}" -j2

- name: Install (Unix)
if: runner.os != 'Windows'
- name: Install SDK
shell: bash
run: |
set -euxo pipefail
cmake --install build
cmake --install "${{ matrix.build_dir }}"

- name: Configure (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
cmake -S . -B build -A x64 `
-DVIX_ENABLE_INSTALL=ON `
-DVIX_DB_USE_MYSQL=OFF `
-DVIX_CORE_WITH_MYSQL=OFF `
-DVIX_ENABLE_HTTP_COMPRESSION=OFF `
-DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\install" `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake"

- name: Build (Windows)
if: runner.os == 'Windows'
shell: pwsh
- name: Package SDK
shell: bash
run: |
cmake --build build --config Release
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
set -euxo pipefail

- name: Install (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
cmake --install build --config Release
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
mkdir -p dist

test -d "${{ matrix.install_dir }}"
tar -C "${{ matrix.install_dir }}" -czf "dist/${{ matrix.asset }}" .

- name: Package SDK (Unix)
if: runner.os != 'Windows'
ls -lah dist

- name: Validate packaged SDK binary
shell: bash
run: |
set -euxo pipefail
mkdir -p dist
ASSET="vix-sdk-${{ matrix.sdkos }}-${{ matrix.arch }}.tar.gz"
tar -C install -czf "dist/$ASSET" .

- name: Validate packaged SDK (Linux)
if: runner.os == 'Linux'
rm -rf smoke-bin
mkdir -p smoke-bin

tar -xzf "dist/${{ matrix.asset }}" -C smoke-bin

test -f smoke-bin/bin/vix
file smoke-bin/bin/vix
ldd smoke-bin/bin/vix || true
smoke-bin/bin/vix --version

- name: Validate packaged SDK with consumer project
shell: bash
run: |
set -euxo pipefail

mkdir -p smoke
tar -xzf "dist/vix-sdk-${{ matrix.sdkos }}-${{ matrix.arch }}.tar.gz" -C smoke
rm -rf smoke-sdk consumer
mkdir -p smoke-sdk consumer

test -f smoke/bin/vix
file smoke/bin/vix
ldd smoke/bin/vix || true
smoke/bin/vix --version
tar -xzf "dist/${{ matrix.asset }}" -C smoke-sdk

- name: Package SDK (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
New-Item -ItemType Directory -Force -Path dist | Out-Null
$asset = "vix-sdk-windows-${{ matrix.arch }}.zip"
cat > consumer/CMakeLists.txt <<'EOF'
cmake_minimum_required(VERSION 3.20)
project(vix_sdk_consumer LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Vix CONFIG REQUIRED)

add_executable(app main.cpp)
target_link_libraries(app PRIVATE vix::vix)
EOF

cat > consumer/main.cpp <<'EOF'
#include <vix.hpp>

#include <iostream>

if (!(Test-Path "install")) {
Write-Host "install directory not found"
exit 1
int main()
{
std::cout << "Vix SDK consumer build works\n";
return 0;
}
EOF

Compress-Archive -Path "install\*" -DestinationPath "dist\$asset" -Force
cmake -S consumer -B consumer/build \
-DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/smoke-sdk"

cmake --build consumer/build -j2

./consumer/build/app

- name: Upload dist
uses: actions/upload-artifact@v4
with:
name: sdk-dist-${{ matrix.sdkos }}-${{ matrix.arch }}
name: sdk-dist-${{ matrix.variant }}-${{ matrix.sdkos }}-${{ matrix.arch }}
path: dist/*
if-no-files-found: error

Expand All @@ -235,26 +270,37 @@ jobs:
shell: bash
run: |
set -euxo pipefail

mkdir -p dist
find dist-all -type f -name "vix-sdk-*" -exec cp -f {} dist/ \;
ls -la dist

find dist-all -type f -name "vix-sdk-*.tar.gz" -exec cp -f {} dist/ \;

test -f dist/vix-sdk-linux-x86_64.tar.gz
test -f dist/vix-sdk-db-linux-x86_64.tar.gz
test -f dist/vix-sdk-full-linux-x86_64.tar.gz

ls -lah dist

- name: Generate sha256 files
shell: bash
run: |
set -euxo pipefail

cd dist
for f in vix-sdk-*; do

for f in vix-sdk-*.tar.gz; do
[ -f "$f" ] || continue
sha256sum "$f" > "$f.sha256"
done
ls -la

ls -lah

- name: Determine tag
id: tag
shell: bash
run: |
set -euxo pipefail

if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ github.event.inputs.tag }}" ]; then
echo "tag=${{ github.event.inputs.tag }}" >> "$GITHUB_OUTPUT"
else
Expand Down
8 changes: 8 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,11 @@
path = modules/process
url = https://github.com/vixcpp/process.git
branch = dev
[submodule "modules/threadpool"]
path = modules/threadpool
url = https://github.com/vixcpp/threadpool.git
branch = dev
[submodule "modules/kv"]
path = modules/kv
url = https://github.com/vixcpp/kv.git
branch = dev
Loading
Loading