Skip to content

Commit d0fea8c

Browse files
ci: stop subset Linux lanes clobbering the server-enabled vcpkg cache (#53)
All x64-linux jobs (5 matrix lanes + strict-dimensional-validation + diagram-render-smoke) share one vcpkg binary-cache key but build different closures: only server-enabled pulls grpc+protobuf. All wrote readwrite, so a ~1min subset lane won the save race and froze a grpc-less cache; the server lane's save was rejected (key exists), so it rebuilt grpc from source every run (~65min, slowest lane ~67min). Make server-enabled the sole writer (its closure is the union of every lane) and the 6 subset jobs read-only via setup-vcpkg's cache-write toggle. Bump setup-vcpkg to v2.2 (also image-aware key). The key now rotates (ImageVersion), so the first main run repopulates a complete cache without manual deletion. Closes #52
1 parent 96041e4 commit d0fea8c

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

.github/workflows/ci.yml

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,14 @@ jobs:
122122
sudo apt-get install -y ninja-build g++
123123
124124
- name: Setup vcpkg
125-
uses: anolishq/.github/.github/actions/setup-vcpkg@c76784aff711e6540d539f6a5c3ea33c63627930 # v2
125+
uses: anolishq/.github/.github/actions/setup-vcpkg@b2d9b16b9accee0e58d37e7d05add68b6621961a # v2.2
126126
with:
127127
triplet: x64-linux
128+
# server-enabled is the sole writer (its closure — grpc+protobuf+json+
129+
# yaml+gtest — is the union of every lane). The 4 subset lanes restore
130+
# only, so a 1-min subset save can't clobber the shared key and drop
131+
# grpc, which forced a ~65min grpc rebuild on the server lane every run.
132+
cache-write: ${{ matrix.lane == 'server-enabled' }}
128133

129134
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
130135
if: ${{ matrix.grpc_integration }}
@@ -179,9 +184,12 @@ jobs:
179184
sudo apt-get install -y ninja-build g++ python3
180185
181186
- name: Setup vcpkg
182-
uses: anolishq/.github/.github/actions/setup-vcpkg@c76784aff711e6540d539f6a5c3ea33c63627930 # v2
187+
uses: anolishq/.github/.github/actions/setup-vcpkg@b2d9b16b9accee0e58d37e7d05add68b6621961a # v2.2
183188
with:
184189
triplet: x64-linux
190+
# Subset closure (core preset, no grpc) — read-only so it can't clobber
191+
# the shared x64-linux key written by the server-enabled lane.
192+
cache-write: "false"
185193

186194
- name: Run strict dimensional validation
187195
id: dimensional
@@ -213,7 +221,7 @@ jobs:
213221
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
214222

215223
- name: Setup vcpkg
216-
uses: anolishq/.github/.github/actions/setup-vcpkg@c76784aff711e6540d539f6a5c3ea33c63627930 # v2
224+
uses: anolishq/.github/.github/actions/setup-vcpkg@b2d9b16b9accee0e58d37e7d05add68b6621961a # v2.2
217225
with:
218226
triplet: x64-windows-v145
219227

@@ -237,7 +245,7 @@ jobs:
237245
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
238246

239247
- name: Setup vcpkg
240-
uses: anolishq/.github/.github/actions/setup-vcpkg@c76784aff711e6540d539f6a5c3ea33c63627930 # v2
248+
uses: anolishq/.github/.github/actions/setup-vcpkg@b2d9b16b9accee0e58d37e7d05add68b6621961a # v2.2
241249
with:
242250
triplet: x64-windows-v145
243251

@@ -266,9 +274,12 @@ jobs:
266274
sudo apt-get install -y ninja-build g++ graphviz
267275
268276
- name: Setup vcpkg
269-
uses: anolishq/.github/.github/actions/setup-vcpkg@c76784aff711e6540d539f6a5c3ea33c63627930 # v2
277+
uses: anolishq/.github/.github/actions/setup-vcpkg@b2d9b16b9accee0e58d37e7d05add68b6621961a # v2.2
270278
with:
271279
triplet: x64-linux
280+
# Subset closure (diagram preset, no grpc) — read-only so it can't
281+
# clobber the shared x64-linux key written by the server-enabled lane.
282+
cache-write: "false"
272283

273284
- name: Configure diagram preset
274285
run: cmake --preset ci-linux-release-diagram

0 commit comments

Comments
 (0)