-
Notifications
You must be signed in to change notification settings - Fork 38.7k
ci: Define cases when invalidate vcpkg binary cache #23329
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The VCPKG_TAG variable renamed to CI_VCPKG_TAG to prevent any possible name clash with vcpkg-specific variables. The vcpkg_cache script renamed into more meaningful one.
This change comes with two improvements: 1) using the VCPKG_DEFAULT_BINARY_CACHE variable drops dependency on vcpkg default cached archives location, and improves readability 2) two obvious cases when binary cache is invalidated are defined, that guaranties it won't grow boundlessly when, for example, vcpkg has being updated.
|
Isn't this almost the same as #23215? Why can't it be done in that PR? It's nearly impossible to keep track of the constant changes for these Windows CIs. |
Sorry about that.
Yes, this PR is split from #23215.
That was my initial idea when I opened #23215. But it created a confusion (at least, I have such an impression), that the goal of such combined PR was introducing a vcpkg binary caching. It is not the case. So I decided to leave #23215 solely on purpose of introducing of vcpkg downloads cache which has completely different goal in comparison to binary cache. Therefore, this PR is focused on an improvement of already used vcpkg binary caching feature. And #23215 will be focused on an introducing a new vcpkg downloads cache. |
|
Friendly ping @sipsorcery 🐅 |
|
@hebasto are you sure that you're caching the correct vcpkg directory? It's my understanding that the On my local machine the vcpkg manifest mechanism puts the built binaries in |
Yes, I am 🐅 One could track any dependency package (
In the build log one can see:
Actually, the
Correct. But this action seems orthogonal to the vcpkg "Binary Caching" mechanism. |
I stand corrected. I did a build, deleted the Am I correct that the CI snippet below deletes and re-creates the |
To be precise, an old cache is not loaded, rather "deleted". Cases for such cache invalidation are any of the following:
Yes, it is. But only in two explicit cases: FWIW, usual binary cache expected size is 83 MB, on master (8a083bc) it is 334 MB now. Just in case: https://cirrus-ci.org/guide/writing-tasks/#cache-instruction |
|
ACK e8692cf. |
f778845 ci: Add vcpkg tools cache (Hennadii Stepanov) Pull request description: On master (02feae5) vcpkg downloads some tools that are used internally: ``` ... A suitable version of cmake was not found (required v3.20.0). Downloading portable cmake v3.20.0... Downloading cmake... https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2-windows-i386.zip -> C:\Users\ContainerAdministrator\AppData\Local\Temp\vcpkg\downloads\cmake-3.20.2-windows-i386.zip Extracting cmake... A suitable version of 7zip was not found (required v18.1.0). Downloading portable 7zip v18.1.0... Downloading 7zip... https://www.nuget.org/api/v2/package/7-Zip.CommandLine/18.1.0 -> C:\Users\ContainerAdministrator\AppData\Local\Temp\vcpkg\downloads\7-zip.commandline.18.1.0.nupkg Extracting 7zip... A suitable version of nuget was not found (required v5.5.0). Downloading portable nuget v5.5.0... Downloading nuget... https://dist.nuget.org/win-x86-commandline/v5.5.1/nuget.exe -> C:\Users\ContainerAdministrator\AppData\Local\Temp\vcpkg\downloads\22ea847d-nuget.exe Detecting compiler hash for triplet x64-windows-static... A suitable version of powershell-core was not found (required v7.1.0). Downloading portable powershell-core v7.1.0... Downloading powershell-core... https://github.com/PowerShell/PowerShell/releases/download/v7.1.3/PowerShell-7.1.3-win-x86.zip -> C:\Users\ContainerAdministrator\AppData\Local\Temp\vcpkg\downloads\PowerShell-7.1.3-win-x86.zip Extracting powershell-core... ... ``` If any of downloads above fails the whole CI task fails (see #23107). The most recent failure examples in the master branch: - c001da3, [log](https://api.cirrus-ci.com/v1/task/5182966176415744/logs/build.log) - 12ff899, [log](https://api.cirrus-ci.com/v1/task/5367684129882112/logs/build.log) This PR adds vcpkg tools cache. Closes #23107. --- Note for reviewers. Some patches from the initial PR were split into separated PRs: #23310 and #23329. Therefore, a discussion here could be outdated or irrelevant until the recent [push](#23215 (comment)). ACKs for top commit: sipsorcery: ACK f778845. Tree-SHA512: 201f4e4d38c00cbec6aaeca4f3e1b60f1c65289fb68b82cead47f37f6af5ac42dd539cf8ed3566f5bd9afe4a7762d42bbabb316d58f47352d4e7bfc2214806fe
On master (c8bae2b), the size of the vcpkg binary cache is potentially unbounded.
The reason of such behavior is the internal caching logic, following which, any change in the set of parameters defined by the vcpkg implementation will cause compiling of a new binaries following by adding them to the current cache.
This PR defines two obvious cases when the vcpkg binary cache will be invalidated.