Add SCONS_CACHE_MSVC_CONFIG to speed up multiple SCons invocations (#18045)
Fixes #18023
Summary of the issue:
SCons reading script files is very slow on Github Actions. This has been pinpointed to the initialization of the msvc SCons tool, particularly during execution of vcvarsall.bat
Description of user facing changes
About five minutes less runner time for a push.🚀
Description of development approach
We now cache the execution of vcvars using the SCONS_CACHE_MSVC_CONFIG environment variable:
For Appveyor, set the variable to True. This means that the cache is saved in the user profile. This is fine on appveyor because we're executing everything in one run. This is in line with how SCons runs appveyor itself.
For Github Actions, use a separate cache for the MSVC json file. After the first run, save the cache json file as part of the workspace. The cache action handles this automatically, there's no need to use cache/restore and cache/save explicitly.