ci(vcpkg): add ecosystem end-to-end integration test across 8 ports#608
Merged
kcenon merged 3 commits intoApr 7, 2026
Merged
Conversation
Add badge and description for the new end-to-end ecosystem vcpkg integration workflow that validates all 8 ports in dependency order. Update CHANGELOG with entry for #604.
Add workflow and minimal consumer projects that validate the full kcenon ecosystem dependency graph via vcpkg registry consumption. - 8 layer-ordered jobs with needs: chains modeling the DAG - Per-layer consumer projects under tests/ecosystem-consumer/ - Shared vcpkg-configuration.json (single registry baseline) - fail-fast: false per OS matrix, layer-level gating via needs: - Error annotations and failure artifact upload for debugging - Triggers: pull_request (path-filtered), nightly schedule, manual
The exported CMake target is kcenon::common_system, not common_system::common_system. Fixes Layer 0 configure failure in ecosystem-vcpkg-integration workflow.
This was referenced Apr 7, 2026
Closed
kcenon
added a commit
that referenced
this pull request
Apr 13, 2026
…608) * docs(ci): document ecosystem vcpkg integration test workflow Add badge and description for the new end-to-end ecosystem vcpkg integration workflow that validates all 8 ports in dependency order. Update CHANGELOG with entry for #604. * ci(vcpkg): add ecosystem end-to-end integration test for 8 ports Add workflow and minimal consumer projects that validate the full kcenon ecosystem dependency graph via vcpkg registry consumption. - 8 layer-ordered jobs with needs: chains modeling the DAG - Per-layer consumer projects under tests/ecosystem-consumer/ - Shared vcpkg-configuration.json (single registry baseline) - fail-fast: false per OS matrix, layer-level gating via needs: - Error annotations and failure artifact upload for debugging - Triggers: pull_request (path-filtered), nightly schedule, manual * fix(ci): correct common_system vcpkg target name in ecosystem consumer The exported CMake target is kcenon::common_system, not common_system::common_system. Fixes Layer 0 configure failure in ecosystem-vcpkg-integration workflow.
13 tasks
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add a dedicated CI workflow (
ecosystem-vcpkg-integration.yml) and minimal consumer projects that validate the full kcenon ecosystem dependency graph — fromcommon_system(Layer 0) throughpacs_system(Layer 7) — via vcpkg registry consumption.needs:chains that model the actual dependency DAGtests/ecosystem-consumer/, one per portvcpkg-configuration.jsonpointing tokcenon/vcpkg-registry::error::annotations and failure artifact upload for fast debuggingDependency Graph (Job DAG)
Layers 2/3/4/5 run concurrently where dependencies allow. Total sequential depth is ~4 layers, not 8.
Design Decisions
Registry consumption vs overlay-ports: The issue (#604) references overlay-ports, but this implementation uses vcpkg manifest mode with
vcpkg-configuration.jsonpointing tokcenon/vcpkg-registry. This is intentional — the registry path is what real downstream consumers use, so it validates the actual consumption experience including version resolution and baseline constraints. All 8 ports are registered in the ecosystem's vcpkg-registry.fail-fast strategy:
fail-fast: falsewithin each job's OS matrix (so both ubuntu and macOS complete independently), with layer-level gating vianeeds:chains (if Layer 0 fails on both runners, Layer 1+ won't start).Review Summary
Two review rounds completed. All findings resolved:
fail-fast: truecancelled sibling OS runnersfail-fast: falsein all 8 jobs::error::annotations on failureif: failure()upload step per jobvcpkg-configuration.jsonfind_package(OpenSSL QUIET)Deferred Items
common-systemtests actual library functionality (creates aResult<int>). Other consumers include a header and link but don't instantiate types. Can be strengthened in a follow-up.Files Changed
.github/workflows/ecosystem-vcpkg-integration.yml— 8-job workflow (609 lines)tests/ecosystem-consumer/vcpkg-configuration.json— shared registry configtests/ecosystem-consumer/<port>/CMakeLists.txt— per-port CMake (8 files)tests/ecosystem-consumer/<port>/main.cpp— per-port consumer (8 files)tests/ecosystem-consumer/<port>/vcpkg.json— per-port manifest (8 files)Test plan
workflow_dispatchtrigger allows manual test run::error::annotation in GitHub Actions UICloses #604