dotnet / performance

This repo contains benchmarks used for testing the performance of all .NET Runtimes
MIT License
689 stars 267 forks source link

Maui Scenario Workload Download Error #2230

Closed LoopedBard3 closed 2 years ago

LoopedBard3 commented 2 years ago

The workload download being completed for the Maui scenarios has been broken for some time (exact time is unknown, likely around transition from 6.0.1xx runtime to 6.0.2xx runtime usage for workload packages). Unfortunately, the error did not cause the pipelines to error out, instead the dotnet workload install just downloaded the newest compatible packages it could find. This can be seen:

Updated advertising manifest microsoft.net.sdk.ios.
Updated advertising manifest microsoft.net.workload.mono.toolchain.
Installing workload manifest microsoft.net.sdk.android version 31.0.200-preview.13.35…
Workload installation failed. Rolling back installed packs...
Installing workload manifest microsoft.net.sdk.android version 31.0.101-preview.9.16…
Installation rollback failed: Failed to install manifest microsoft.net.sdk.android version 31.0.101-preview.9.16: The transaction has aborted..
Workload update failed: Failed to install manifest microsoft.net.sdk.android version 31.0.200-preview.13.35: microsoft.net.sdk.android.manifest-6.0.100::31.0.200-preview.13.35 is not found in NuGet feeds https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7-transport/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json;https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6-transport/nuget/v3/index.json;https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-buildservices/nuget/v3/index.json"..

Installing pack Microsoft.Maui.Core.Ref.android version 6.0.101-preview.9.1805...
Skip NuGet package signing validation. NuGet signing validation is not available on Linux or macOS https://aka.ms/workloadskippackagevalidation .
Writing workload pack installation record for Microsoft.Maui.Core.Ref.android version 6.0.101-preview.9.1805...
Installing pack Microsoft.Maui.Core.Runtime.android version 6.0.101-preview.9.1805...

The current approach, which closely matches what is done in the Maui repo, is to just download the latest version of the dotnet sdk and then install the workloads: Most specifically seen https://github.com/dotnet/maui/blob/main/src/DotNet/DotNet.csproj#L7-L19 and https://github.com/dotnet/maui/blob/553b69bc5c5dea29f95a72ae331a6fd526df6ffb/eng/cake/dotnet.cake#L23-L45 or in the build pipeline output covering these steps.

steveisok commented 2 years ago

@jonathanpeppers do you have any info that might help? Is the suggested workaround the right way?

jonathanpeppers commented 2 years ago

This is now using --from-rollback-file https://aka.ms/dotnet/maui/main.json

It's the same concept we've been advertising here: https://github.com/dotnet/maui/blob/main/.github/DEVELOPMENT.md#net-maui-workload

That file is updated by dotnet/maui's CI, and should be a set of workloads that work together.

I think that is the right approach. @LoopedBard3 will be be able to see the version numbers of packs when things go wrong? As long as there is a log that says what packs are getting installed, we should be good.

LoopedBard3 commented 2 years ago

Yes, the version numbers of the packs should be pretty easily findable when something goes wrong. 👍