actions / runner-images

GitHub Actions runner images
MIT License
9.13k stars 2.82k forks source link

[Windows-2022] Multiple VC Build Tools will be removed on May, 13 #9701

Open mikhailkoliada opened 2 weeks ago

mikhailkoliada commented 2 weeks ago

Breaking changes

We will commence the procedure of removing redundant Microsoft.VisualStudio.Component.VC components and leave only the latest available version of some oh them.

Target date

The images rollout process will start on May, 13 and take 3-4 days.

The motivation for the changes

Due to numerous reports regarding errors when using Visual Studio 2022 with multiple pre-installed versions of VC build tools, we are compelled to cease the distribution of alternative versions of the component. Detailed description of the problem can be found here. The list of previously opened issues: #9670, #9404, #9086, #8891, #7867, #7832, #6107, #6091. Therefore, starting from May 6th, we will commence the procedure of removing redundant VC components and leave only the latest available version. We'll possibly reconsider this decision once the problem is resolved.

List of the VC components which are expected to be installed (if you notice that some useful base VC component is missing - indicate that in the comments, we will consider adding it):

Package Version
Microsoft.VisualStudio.Component.VC.14.29.16.11.ARM latest
Microsoft.VisualStudio.Component.VC.14.29.16.11.ARM64 latest
Microsoft.VisualStudio.Component.VC.ASAN latest
Microsoft.VisualStudio.Component.VC.ATL latest
Microsoft.VisualStudio.Component.VC.ATL.ARM latest
Microsoft.VisualStudio.Component.VC.ATL.ARM.Spectre latest
Microsoft.VisualStudio.Component.VC.ATL.ARM64 latest
Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre latest
Microsoft.VisualStudio.Component.VC.ATL.Spectre latest
Microsoft.VisualStudio.Component.VC.ATLMFC latest
Microsoft.VisualStudio.Component.VC.ATLMFC.Spectre latest
Microsoft.VisualStudio.Component.VC.CLI.Support latest
Microsoft.VisualStudio.Component.VC.CMake.Project latest
Microsoft.VisualStudio.Component.VC.CoreIde latest
Microsoft.VisualStudio.Component.VC.DiagnosticTools latest
Microsoft.VisualStudio.Component.VC.Llvm.Clang latest
Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset latest
Microsoft.VisualStudio.Component.VC.MFC.ARM latest
Microsoft.VisualStudio.Component.VC.MFC.ARM.Spectre latest
Microsoft.VisualStudio.Component.VC.MFC.ARM64 latest
Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre latest
Microsoft.VisualStudio.Component.VC.Modules.x86.x64 latest
Microsoft.VisualStudio.Component.VC.Redist.14.Latest latest
Microsoft.VisualStudio.Component.VC.Redist.MSM latest
Microsoft.VisualStudio.Component.VC.Runtimes.ARM.Spectre latest
Microsoft.VisualStudio.Component.VC.Runtimes.ARM64.Spectre latest
Microsoft.VisualStudio.Component.VC.Runtimes.ARM64EC.Spectre latest
Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre latest
Microsoft.VisualStudio.Component.VC.TestAdapterForBoostTest latest
Microsoft.VisualStudio.Component.VC.TestAdapterForGoogleTest latest

Possible impact

Builds that require non-latest components missing from the list above will be broken.

Platforms affected

Runner images affected

Mitigation ways

Missing workloads can be installed manually in runtime. We recommend to uninstall unsupported workloads before installing new, it might be done using this snippet.


    steps:
      - name: Delete components
        run: |
                Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
                $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
                $componentsToRemove= @(
                    "Microsoft.VisualStudio.Component.VC.ATL.ARM"
                    "Microsoft.VisualStudio.Component.VC.ATL.ARM.Spectre"
                )
                [string]$workloadArgs = $componentsToRemove | ForEach-Object {" --remove " +  $_}
                $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
                # should be run twice
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden

      - name: Install components
        run: |
                Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
                $InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
                $componentsToRemove= @(
                  "Microsoft.VisualStudio.Component.VC.14.39.17.9.ATL.ARM"
                  "Microsoft.VisualStudio.Component.VC.14.39.17.9.ATL.ARM.Spectre"
                )
                [string]$workloadArgs = $componentsToRemove | ForEach-Object {" --add " +  $_}
                $Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
                # should be run twice
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
                $process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden