fix(ci): pin vcpkg checkout to tag 2026.04.27 so the binary cache actually hits#102
Merged
Conversation
setup-vcpkg/action.yml was doing a plain `git clone microsoft/vcpkg` with
no checkout, so every CI run landed on whatever master HEAD happened to
be that day. That silently shifts port-version ABI hashes between runs,
invalidating the binary archive cache that the action set up two steps
later. Result: every CI run paid the cold vcpkg-compile cost.
Align all four pinning points on tag 2026.04.27 (commit 56bb2411):
- third_party/vcpkg submodule
- vcpkg-configuration.json baseline
- docker/postgres-ext.Dockerfile ARG VCPKG_COMMIT
- .github/actions/setup-vcpkg/action.yml (the actual fix — adds the
`git checkout` that was missing, plus a `git fetch` for the case
where the runner already has a cached vcpkg clone from a prior run)
We were previously at 2026.03.18-398 (mid-release); the tagged commit is
144 commits forward of that, so this is a small forward move to a
curated port-set, not a rewind.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Pins vcpkg to a specific tagged commit (2026.04.27 / 56bb2411…) across CI, Docker builds, and the vcpkg registry baseline to stabilize port ABI hashes and make the vcpkg binary cache reliably hit between runs.
Changes:
- Update
vcpkg-configuration.jsonbuiltin registry baseline to56bb2411…. - Update Docker build arg
VCPKG_COMMITto the same pinned commit. - Update the composite
setup-vcpkgGitHub Action to explicitlygit checkoutthe pinned commit (and attempt agit fetchwhen$HOME/vcpkgalready exists).
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
vcpkg-configuration.json |
Aligns the builtin registry baseline with the pinned vcpkg tag/commit for reproducible dependency resolution. |
docker/postgres-ext.Dockerfile |
Pins the vcpkg clone used in the Docker build to the same commit for reproducible images. |
.github/actions/setup-vcpkg/action.yml |
Ensures CI uses a deterministic vcpkg commit rather than drifting master, improving cache hit rates. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
serprex
approved these changes
Jun 1, 2026
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.
TL;DR
CI runtimes are awful because our cache misses every time MS updates a comment at HEAD; fix that
Summary
Cherry-pick of the vcpkg pin from PR #96 so it can land independently of the broader quickstart/Dockerfile work in that PR. PR #101 currently carries this same commit as a cherry-pick; once this PR merges, that PR will rebase to drop the duplicate.
Why
setup-vcpkg/action.ymlwas doing a plaingit clone microsoft/vcpkgwith no checkout, so every CI run landed on whatever master HEAD happened to be that day. That silently shifts port-version ABI hashes between runs, invalidating the binary archive cache that the action set up two steps later. Result: every CI run paid the cold vcpkg-compile cost.Aligns all four pinning points on tag
2026.04.27(commit56bb2411):third_party/vcpkgsubmodulevcpkg-configuration.jsonbaselinedocker/postgres-ext.DockerfileARG VCPKG_COMMIT.github/actions/setup-vcpkg/action.yml— the actual fix (adds thegit checkoutthat was missing, plus agit fetchfor the case where the runner already has a cached vcpkg clone from a prior run)Previously at
2026.03.18-398(mid-release); the tagged commit is 144 commits forward of that, so this is a small forward move to a curated port-set, not a rewind.Test plan
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
Note
Low Risk
Build/CI reproducibility only; no runtime app logic, auth, or data handling changes.
Overview
Pins vcpkg to tag 2026.04.27 (
56bb2411…) everywhere CI and Docker install it, so port baselines and binary cache keys stay stable across runs.The composite
setup-vcpkgaction now checks out that commit after clone and on reuse of an existing$HOME/vcpkgclone (withgit fetchwhen needed)—previously it stayed on master HEAD and silently busted the vcpkg binary archive cache.vcpkg-configuration.jsonbaseline anddocker/postgres-ext.DockerfileVCPKG_COMMITare updated to the same hash for alignment with the submodule.Reviewed by Cursor Bugbot for commit cb45f87. Bugbot is set up for automated code reviews on this repo. Configure here.