core icon indicating copy to clipboard operation
core copied to clipboard

Provide stable links table

Open richlander opened this issue 11 months ago • 0 comments

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:

{
  "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.

$ 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.

{
  "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:

{
  "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

richlander avatar Jan 16 '25 20:01 richlander