Provide stable links table
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