Skip to content

chore(ci): unify vcpkg manifest mode across all CI platforms#886

Merged
kcenon merged 2 commits intomainfrom
chore/issue-885-unify-vcpkg-manifest-mode-across-all-ci-pl
Mar 24, 2026
Merged

chore(ci): unify vcpkg manifest mode across all CI platforms#886
kcenon merged 2 commits intomainfrom
chore/issue-885-unify-vcpkg-manifest-mode-across-all-ci-pl

Conversation

@kcenon
Copy link
Owner

@kcenon kcenon commented Mar 23, 2026

Closes #885

Summary

  • Replace per-platform manual ecosystem dependency builds with unified vcpkg manifest mode for Linux, macOS, and Windows in the build job
  • Remove ~240 lines of manual checkout/build/install shell scripts and GoogleTest ABI workaround blocks
  • Add cross-platform vcpkg setup with 2-tier caching (vcpkg binary + vcpkg_installed directory) following the logger_system CI pattern
  • Add fallback mechanism: vcpkg build failure falls back to system libraries (Unix) or system vcpkg (Windows)

Changes

Build job modifications

  • Matrix: Added triplet field (x64-linux, arm64-osx, x64-windows)
  • Removed: 4 ecosystem checkout steps (common, thread, logger, container)
  • Removed: "Build ecosystem dependencies" steps for Unix (~77 lines) and Windows (~86 lines)
  • Removed: "Update vcpkg baseline (Windows)" and old "Install dependencies (Windows)" steps
  • Removed: GoogleTest rm -f gtest*.a ABI workaround blocks
  • Simplified: System dependency install to build tools only (cmake, ninja, pkg-config)
  • Added: Unified vcpkg clone, bootstrap, cache, and manifest-mode install steps
  • Added: CMAKE_TOOLCHAIN_FILE to all platform configure steps (Unix and Windows)
  • Added: Fallback build steps (vcpkg -> system libraries) with continue-on-error pattern
  • Added: aarch64 architecture check for VCPKG_FORCE_SYSTEM_BINARIES
  • Changed: Timeout from 45 to 60 minutes (vcpkg first-time builds may take longer)

Jobs NOT modified

  • build-minimal — still uses common_system checkout + manual build
  • sanitizers — still uses manual ecosystem checkout/build (sanitizer flags required)
  • test-downstream — still uses system packages for downstream compatibility test

Review Summary

All 7 acceptance criteria verified PASS:

  1. Linux GCC/Clang use vcpkg install --triplet x64-linux
  2. macOS uses vcpkg install --triplet arm64-osx
  3. CMAKE_TOOLCHAIN_FILE passed to CMake on all platforms
  4. vcpkg cache configured (2-tier: vcpkg binary + installed packages)
  5. Manual ecosystem checkout/build blocks removed from build job
  6. Tests run on all platforms (CI validation pending)
  7. Timeout increased to 60 minutes with caching to mitigate CI time

Code quality review: no Critical or Major findings. Two informational observations noted (fallback step error suppression pattern, vcpkg features not explicitly activated — both match existing behavior and logger_system reference).

Test plan

  • Linux GCC build passes with vcpkg dependencies
  • Linux Clang build passes with vcpkg dependencies
  • macOS Clang build passes with vcpkg dependencies
  • Windows MSVC build passes with vcpkg dependencies
  • build-minimal job still passes (unchanged)
  • sanitizers job still passes (unchanged)
  • test-downstream job still passes (unchanged)

kcenon added 2 commits March 24, 2026 06:36
Replace per-platform manual ecosystem dependency builds with unified
vcpkg manifest mode for Linux, macOS, and Windows in the build job.

Changes to the build job:
- Add triplet to matrix (x64-linux, arm64-osx, x64-windows)
- Remove 4 ecosystem checkout steps (common, thread, logger, container)
- Remove manual "Build ecosystem dependencies" steps (Unix ~77 lines,
  Windows ~86 lines) and GoogleTest ABI workaround blocks
- Simplify system dependency install to build tools only (cmake, ninja,
  pkg-config) — library packages now come from vcpkg
- Add cross-platform vcpkg setup: clone, bootstrap, 2-tier cache
  (vcpkg binary + vcpkg_installed), and manifest-mode install
- Configure CMake with CMAKE_TOOLCHAIN_FILE on all platforms
- Add fallback mechanism: vcpkg failure falls back to system libraries
  (Unix) or system vcpkg (Windows), matching logger_system pattern
- Increase timeout from 45 to 60 minutes for first-time vcpkg builds
- Add aarch64 architecture check for VCPKG_FORCE_SYSTEM_BINARIES

Jobs NOT modified: build-minimal, sanitizers, test-downstream.

Closes #885
@github-actions
Copy link
Contributor

Performance Comparison

Base Branch Results

No base results

PR Branch Results

No PR results

@github-actions
Copy link
Contributor

Coverage Report

Metric Value
Line Coverage 62.0%
Target 75% (stretch: 80%)
Coverage Details

Full HTML report is available as a build artifact.

@kcenon kcenon merged commit b2f7364 into main Mar 24, 2026
38 checks passed
@kcenon kcenon deleted the chore/issue-885-unify-vcpkg-manifest-mode-across-all-ci-pl branch March 24, 2026 00:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(ci): Unify vcpkg manifest mode across all CI platforms

1 participant