dotnet / dotnet/core

Provide stable links table

Open
#9,701 0 comments 0 reactions 0 assignees View on GitHub
Team:SDK
Dominant language
PowerShell
Stars
22k
Forks
4.9k
Avg merge
5d 5h
Merged PRs (30d)
29

Description

We provide really nice links tables for nightly builds. It's a single table that is always correct. We should have the same thing for official builds.

- Table: https://github.com/dotnet/sdk/blob/main/documentation/package-table.md
- Example link: https://aka.ms/dotnet/10.0.1xx/daily/dotnet-sdk-win-x64.zip
- Target of link: https://ci.dot.net/public/Sdk/10.0.100-alpha.1.25066.11/dotnet-sdk-10.0.100-alpha.1.25066.11-win-x64.zip

There are two aspects at play here:

- A single table
- The short link targets are updated regularly so that link users don't need to worry about updating links for servicing.

This isn't quite the same thing as: https://dotnet.microsoft.com/download/dotnet/8.0. That page has multiple tables and requires the user to grab new links monthly.

Here's a proposed JSON file that is intended as the source for the table: https://gist.github.com/richlander/5cdc268b7b1ab8fc952791d489370463. It should live at: https://builds.dotnet.microsoft.com/dotnet/8.0/evergreen.json. We'd also have a short-link for this file, like https://aka.ms/dotnet/8.0/evergreen.json. The table would live at https://github.com/dotnet/core/tree/main/release-notes/8.0/evergreen.md. I'm not sure what the file should be called, not likely evergreen.blah. I don't want to call it `release.json` since we already have a file called that w/a slightly different schema and with different link expectations. I'm open to suggestions.

Example build information from the proposed JSON file:

```json
{
"name": "dotnet-runtime-linux-arm.tar.gz",
"rid": "linux-arm",
"url": "https://aka.ms/dotnet/8.0/dotnet-runtime-linux-arm.tar.gz"
}
```

This link already exists.

```bash
$ curl -s --head https://aka.ms/dotnet/8.0/dotnet-runtime-linux-arm.tar.gz | findstr Location
Location: https://builds.dotnet.microsoft.com/dotnet/Runtime/8.0.12/dotnet-runtime-8.0.12-linux-arm.tar.gz
```

The JSON is directly modeled on https://github.com/dotnet/core/blob/main/release-notes/8.0/8.0.12/release.json.

Close readers will notice that the `hash` from the `8.0.12` file is missing in the proposal.

```json
{
"name": "dotnet-runtime-linux-arm.tar.gz",
"rid": "linux-arm",
"url": "https://download.visualstudio.microsoft.com/download/pr/a50c2f56-3ee5-4387-a9a7-4338b75fb5c9/41676fb7ec43d9108a65fc0d76c15717/dotnet-runtime-8.0.12-linux-arm.tar.gz",
"hash": "0b8e3c37f205cf965afbd7096afd5fc6e202248b3e3c174712e1bcf34b6b64ab7b0ef866eeb6e16a114367e35666dacb52eb0ba10dde8b3143314a051eb1a1d0"
}
```

The proposed JSON file should be updated to look like:

```json
{
"name": "dotnet-runtime-linux-arm.tar.gz",
"rid": "linux-arm",
"url": "https://aka.ms/dotnet/8.0/dotnet-runtime-linux-arm.tar.gz"
"hashUrl": "https://aka.ms/dotnet/8.0/dotnet-runtime-linux-arm.tar.gz.sha512"
}
```

The proposed JSON only includes links that exist/work. The checksum link doesn't currently exist, but should.

Related:

- https://github.com/dotnet/core/issues/7641
- https://github.com/dotnet/core/issues/9675

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.