dotnet / dotnet/install-scripts

Rethink distribution mechanisms for known public releases

Aperta
#463 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
Lingua principale
PowerShell
Stelle
213
Fork
120
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

This tool has two primary usage modes:

* acquire binaries for one of the publically-available releases
* acquire binaries for a very specific version (e.g. nightlies) from a customizable location

For both cases we construct a URL with a particular layout based on the request parameters, and this URL redirects to a location with the binaries to download. The location we've stored these binaries has a few known issues, specifically for users with certain network configurations.

I propose that for the first use case, "download the latest 8.0 SDK for the Linux platform, x64 architecture", we should download the binaries from the [.NET Release Manifest](https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json) that the release team publishes for each monthly release.

These manifests support
* detecting support status of a 'channel' - for example in the following JSON we can see that the 8.0 channel is currently considered in 'active' status, and that it is an `lts` release:

```json
{
"channel-version": "8.0",
"latest-release": "8.0.4",
"latest-release-date": "2024-04-09",
"security": true,
"latest-runtime": "8.0.4",
"latest-sdk": "8.0.204",
"product": ".NET",
"release-type" : "lts",
"support-phase": "active",
"eol-date": "2026-11-10",
"releases.json": "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json"
}
```

* discovering the latest release for a channel - for example in the above JSON the `releases.json` property provides a URL that links to the releases for that version. If we follow that URL, we get another manifest full of entries like this:

![image](https://github.com/dotnet/install-scripts/assets/573979/f28a3d9d-d6e2-4d39-9ed5-0e8f15cbd9a1)

Here we can see clearly that we can find the list of assets by filtering on the desired .NET RID. Once we have that release we can easily get
* a download url that uses centralized download.visualstudio.microsoft.com links, which are more battle-tested
* a hash that we can use to validate the download is correct

We should only use this file when

* The user hasn't specified a custom `-AzureFeed`
* The user requests an SDK/Runtime/Asp.Net Runtime via the `--channel` and/or `--quality` options
* The LTS/STS channels do not use quality, and should map to the latest 'stable' release of that kind in the release index
* If `--quality` is daily then the release manifest cannot be used and the Azure Feed should be used

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.