') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Implement fallback detection of redirects for the new CDNs by baronfel · Pull Request #554 · dotnet/install-scripts · GitHub
Skip to content

Implement fallback detection of redirects for the new CDNs - #554

Merged
baronfel merged 5 commits into
mainfrom
implement-probing-of-configured-feeds
Dec 22, 2024
Merged

Implement fallback detection of redirects for the new CDNs#554
baronfel merged 5 commits into
mainfrom
implement-probing-of-configured-feeds

Conversation

@baronfel

@baronfelbaronfel commented Dec 20, 2024

Copy link
Copy Markdown
Member

In preparation for new CDNs for .NET Builds, we are making the scripts resilient to CDN changes.

In the current default mode of execution, the scripts use the channel, quality, and other inputs to look up an aka.ms link that redirects to the current best-known version of the product that the user requested. For example, ./dotnet-install.sh --channel 9.0 --quality ga might use the url https://aka.ms/dotnet/9.0/dotnet-sdk-linux-x64.tar.gz when on an x64 Linux host to download the appropriate version of the SDK.

This url used to be accepted wholesale, but with the new CDN and incremental cleanup of various aka.ms links, we cannot rely on 100% data correctness. In order to buffer these changes, instead of directly using the aka.ms redirect, we'll instead use it to probe the set of known feeds and pick the one to use (if any) before falling back to our legacy lookup mechanism.

We'll derive the 'stem' - the portion of the redirect URL unique to the download - and apply that stem to each feed lookup in priority order. The first url that exists will be the one used for the remainder of the download session.

Powershell script dry-run for .NET 9 SDK installation
./dotnet-install.ps1 -Channel 9.0 -Quality ga -DryRun -VerboseVERBOSE: dotnet-install: Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:VERBOSE: dotnet-install: - The SDK needs to be installed without user interaction and without admin rights.VERBOSE: dotnet-install: - The SDK installation doesn't need to persist across multiple CI runs.VERBOSE: dotnet-install: To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.VERBOSE: dotnet-install: Get-CLIArchitecture-From-Architecture -Architecture "<auto>"VERBOSE: dotnet-install: Get-Machine-ArchitectureVERBOSE: Perform operation 'Enumerate CimInstances' with following parameters, ''className' = CIM_OperatingSystem,'namespaceName' = root\cimv2'.VERBOSE: Operation 'Enumerate CimInstances' complete.VERBOSE: dotnet-install: Get-NormalizedQuality -Quality "ga"VERBOSE: dotnet-install: Normalized quality: ''VERBOSE: dotnet-install: Get-NormalizedChannel -Channel "9.0"VERBOSE: dotnet-install: Normalized channel: '9.0'VERBOSE: dotnet-install: Get-NormalizedProduct -Runtime ""VERBOSE: dotnet-install: Normalized product: 'dotnet-sdk'VERBOSE: dotnet-install: Action 'Product discovery' took 0.0689581 secondsVERBOSE: dotnet-install: Resolve-Installation-Path -InstallDir "<auto>"VERBOSE: dotnet-install: Get-User-Share-PathVERBOSE: dotnet-install: InstallRoot: C:\Users\chusk\AppData\Local\Microsoft\dotnetVERBOSE: Initialized feeds: https://builds.dotnet.microsoft.com/dotnet https://dotnetcli.azureedge.net/dotnet https://ci.dot.net/public https://dotnetbuilds.azureedge.net/publicVERBOSE: dotnet-install: Get-AkaMSDownloadLink -Channel "9.0" -Quality "" -Internal "False" -Product "dotnet-sdk" -Architecture "x64"VERBOSE: dotnet-install: Retrieving primary payload URL from aka.ms link for channel: '9.0', quality: '' product: 'dotnet-sdk', os: 'win', architecture: 'x64'.VERBOSE: dotnet-install: Constructed aka.ms link: 'https://aka.ms/dotnet/9.0/dotnet-sdk-win-x64.zip'.VERBOSE: dotnet-install: Received response:StatusCode: 301, ReasonPhrase: 'Moved Permanently', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:{ Server: Kestrel Location: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zip Request-Context: appId=cid-v1:b47e5e27-bf85-45ba-a97c-0377ce0e5779 X-Response-Cache-Status: True Cache-Control: max-age=0, no-cache, no-store Pragma: no-cache Date: Fri, 20 Dec 2024 22:44:11 GMT Connection: keep-alive Strict-Transport-Security: max-age=31536000 ; includeSubDomains Content-Length: 0 Expires: Fri, 20 Dec 2024 22:44:11 GMT}VERBOSE: Checking configured feeds for the asset at Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zipVERBOSE: Checking https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zipVERBOSE: Requested HTTP/1.1 HEAD with 0-byte payloadVERBOSE: Failed to check https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zipVERBOSE: Checking https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zipVERBOSE: Requested HTTP/1.1 HEAD with 0-byte payloadVERBOSE: Received HTTP/1.1 293042093-byte response of content type application/octet-streamVERBOSE: Found a match at https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zipVERBOSE: dotnet-install: The redirect location retrieved: 'https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zip'.VERBOSE: dotnet-install: Received response:StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:{ Accept-Ranges: bytes Age: 94465 Date: Fri, 20 Dec 2024 22:44:12 GMT ETag: 0x8DD13C4375A70B6 Server: ECAcc (dac/9C73) X-Cache: HIT x-ms-blob-type: BlockBlob x-ms-lease-status: unlocked x-ms-request-id: 69f672e3-101e-007e-0254-52f527000000 x-ms-version: 2009-09-19 Content-Type: application/octet-stream Last-Modified: Tue, 03 Dec 2024 17:59:21 GMT Content-Length: 293042093}VERBOSE: dotnet-install: Retrieved primary named payload URL from aka.ms link: 'https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zip'.VERBOSE: dotnet-install: Downloading using legacy url will not be attempted.VERBOSE: dotnet-install: Version: '9.0.101'.VERBOSE: dotnet-install: Get-Product-Version -SpecificVersion "9.0.101" -PackageDownloadLink "https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zip"VERBOSE: dotnet-install: Get-Product-Version-Url -Flattened "True" -AzureFeed "" -SpecificVersion "9.0.101" -PackageDownloadLink "https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zip"VERBOSE: dotnet-install: Constructed productVersion link: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/sdk-productVersion.txtVERBOSE: dotnet-install: Get-Product-Version-Url -Flattened "False" -AzureFeed "" -SpecificVersion "9.0.101" -PackageDownloadLink "https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zip"VERBOSE: dotnet-install: Constructed productVersion link: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/productVersion.txtVERBOSE: dotnet-install: Checking for the existence of https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/sdk-productVersion.txtVERBOSE: dotnet-install: Product version: '9.0.101'.VERBOSE: dotnet-install: Generated aka.ms link https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zip with version 9.0.101dotnet-install: Payload URLs:dotnet-install: URL #0 - aka.ms: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-win-x64.zipdotnet-install: Repeatable invocation: .\dotnet-install.ps1 -Version "9.0.101" -InstallDir "C:\Users\chusk\AppData\Local\Microsoft\dotnet" -Architecture "x64" -Verbose "True"
Bash script dry-run for .NET 9 SDK installation
./dotnet-install.sh --channel 9.0 --quality ga --dry-run --verbosedotnet-install: Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:dotnet-install: - The SDK needs to be installed without user interaction and without admin rights.dotnet-install: - The SDK installation doesn't need to persist across multiple CI runs.dotnet-install: To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.dotnet-install: Calling: machine_has curldotnet-install: Calling: calculate_varsdotnet-install: Calling: get_normalized_architecture_from_architecture <auto>dotnet-install: Calling: get_machine_architecturedotnet-install: Normalized architecture: 'x64'.dotnet-install: Calling: get_normalized_osdotnet-install: Calling: get_current_os_namedotnet-install: Calling: get_linux_platform_namedotnet-install: Normalized OS: 'linux'.dotnet-install: Calling: get_normalized_quality gadotnet-install: Normalized quality: ''.dotnet-install: Calling: get_normalized_channel 9.0dotnet-install: Normalized channel: '9.0'.dotnet-install: Calling: get_normalized_productdotnet-install: Normalized product: 'dotnet-sdk'.dotnet-install: Calling: resolve_installation_path <auto>dotnet-install: Calling: get_user_install_pathdotnet-install: resolve_installation_path: user_install_path=/home/chethusk/.dotnetdotnet-install: InstallRoot: '/home/chethusk/.dotnet'.dotnet-install: Calling: get_normalized_architecture_for_specific_sdk_version Latest 9.0 x64dotnet-install: Calling: get_current_os_namedotnet-install: Calling: get_linux_platform_namedotnet-install: Calling: get_download_link_from_aka_msdotnet-install: Retrieving primary payload URL from aka.ms for channel: '9.0', quality: '', product: 'dotnet-sdk', os: 'linux', architecture: 'x64'.dotnet-install: Constructed aka.ms link: 'https://aka.ms/dotnet/9.0/dotnet-sdk-linux-x64.tar.gz'.dotnet-install: Calling: get_http_header https://aka.ms/dotnet/9.0/dotnet-sdk-linux-x64.tar.gz truedotnet-install: Calling: machine_has curldotnet-install: Calling: get_http_header_curl https://aka.ms/dotnet/9.0/dotnet-sdk-linux-x64.tar.gz truedotnet-install: Received response: HTTP/1.1 301 Moved PermanentlyServer: KestrelLocation: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzRequest-Context: appId=cid-v1:d94c0f68-64bf-4036-8409-a0e761bb7ee1X-Response-Cache-Status: TrueContent-Length: 0Expires: Fri, 20 Dec 2024 22:32:26 GMTCache-Control: max-age=0, no-cache, no-storePragma: no-cacheDate: Fri, 20 Dec 2024 22:32:26 GMTConnection: keep-aliveStrict-Transport-Security: max-age=31536000 ; includeSubDomainsHTTP/2 200accept-ranges: bytesage: 99445content-md5: CIgc/eLDVx/WFrmmkqQj+w==content-type: application/octet-streamdate: Fri, 20 Dec 2024 22:32:26 GMTetag: 0x8DD13C4389CAD29last-modified: Tue, 03 Dec 2024 17:59:24 GMTserver: ECAcc (dac/9C4B)x-cache: HITx-ms-blob-type: BlockBlobx-ms-lease-status: unlockedx-ms-request-id: 9e02f845-301e-0056-6647-52948f000000x-ms-version: 2009-09-19content-length: 210346874dotnet-install: Calling: sanitize_redirect_url https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Checking configured feeds for the asset at Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Checking https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: check_url_exists https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: machine_has curldotnet-install: No match at https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Checking https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: check_url_exists https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: machine_has curldotnet-install: Found a match at https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: The redirect location retrieved: 'https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gz'.dotnet-install: Retrieved primary payload URL from aka.ms link: 'https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gz'.dotnet-install: Downloading using legacy url will not be attempted.dotnet-install: Version: '9.0.101'.dotnet-install: Calling: get_specific_product_version 9.0.101 https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: get_specific_product_version_url 9.0.101 true https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Constructed productVersion link: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/sdk-productVersion.txtdotnet-install: Calling: get_specific_product_version_url 9.0.101 false https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Constructed productVersion link: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/productVersion.txtdotnet-install: Checking for the existence of https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/sdk-productVersion.txtdotnet-install: Calling: machine_has curldotnet-install: Generated 1 links.dotnet-install: Link 0: aka.ms, 9.0.101, https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Payload URLs:dotnet-install: URL #0 - aka.ms: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Repeatable invocation: ./dotnet-install.sh --version "9.0.101" --install-dir "/home/chethusk/.dotnet" --architecture "x64" --os "linux" --verbosechethusk@Chet-Desktop:/mnt/e/Code/dotnet-install-scripts/src$ ./dotnet-install.sh --channel 9.0 --quality ga --dry-run --verbosedotnet-install: Note that the intended use of this script is for Continuous Integration (CI) scenarios, where:dotnet-install: - The SDK needs to be installed without user interaction and without admin rights.dotnet-install: - The SDK installation doesn't need to persist across multiple CI runs.dotnet-install: To set up a development environment or to run apps, use installers rather than this script. Visit https://dotnet.microsoft.com/download to get the installer.dotnet-install: Calling: machine_has curldotnet-install: Calling: calculate_varsdotnet-install: Calling: get_normalized_architecture_from_architecture <auto>dotnet-install: Calling: get_machine_architecturedotnet-install: Normalized architecture: 'x64'.dotnet-install: Calling: get_normalized_osdotnet-install: Calling: get_current_os_namedotnet-install: Calling: get_linux_platform_namedotnet-install: Normalized OS: 'linux'.dotnet-install: Calling: get_normalized_quality gadotnet-install: Normalized quality: ''.dotnet-install: Calling: get_normalized_channel 9.0dotnet-install: Normalized channel: '9.0'.dotnet-install: Calling: get_normalized_productdotnet-install: Normalized product: 'dotnet-sdk'.dotnet-install: Calling: resolve_installation_path <auto>dotnet-install: Calling: get_user_install_pathdotnet-install: resolve_installation_path: user_install_path=/home/chethusk/.dotnetdotnet-install: InstallRoot: '/home/chethusk/.dotnet'.dotnet-install: Calling: get_normalized_architecture_for_specific_sdk_version Latest 9.0 x64dotnet-install: Calling: get_current_os_namedotnet-install: Calling: get_linux_platform_namedotnet-install: Calling: get_download_link_from_aka_msdotnet-install: Retrieving primary payload URL from aka.ms for channel: '9.0', quality: '', product: 'dotnet-sdk', os: 'linux', architecture: 'x64'.dotnet-install: Constructed aka.ms link: 'https://aka.ms/dotnet/9.0/dotnet-sdk-linux-x64.tar.gz'.dotnet-install: Calling: get_http_header https://aka.ms/dotnet/9.0/dotnet-sdk-linux-x64.tar.gz truedotnet-install: Calling: machine_has curldotnet-install: Calling: get_http_header_curl https://aka.ms/dotnet/9.0/dotnet-sdk-linux-x64.tar.gz truedotnet-install: Received response: HTTP/1.1 301 Moved PermanentlyServer: KestrelLocation: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzRequest-Context: appId=cid-v1:d94c0f68-64bf-4036-8409-a0e761bb7ee1X-Response-Cache-Status: TrueContent-Length: 0Expires: Fri, 20 Dec 2024 22:45:17 GMTCache-Control: max-age=0, no-cache, no-storePragma: no-cacheDate: Fri, 20 Dec 2024 22:45:17 GMTConnection: keep-aliveStrict-Transport-Security: max-age=31536000 ; includeSubDomainsHTTP/2 200accept-ranges: bytesage: 100216content-md5: CIgc/eLDVx/WFrmmkqQj+w==content-type: application/octet-streamdate: Fri, 20 Dec 2024 22:45:17 GMTetag: 0x8DD13C4389CAD29last-modified: Tue, 03 Dec 2024 17:59:24 GMTserver: ECAcc (dac/9C4B)x-cache: HITx-ms-blob-type: BlockBlobx-ms-lease-status: unlockedx-ms-request-id: 9e02f845-301e-0056-6647-52948f000000x-ms-version: 2009-09-19content-length: 210346874dotnet-install: Calling: sanitize_redirect_url https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Checking configured feeds for the asset at Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Checking https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: check_url_exists https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: machine_has curldotnet-install: No match at https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Checking https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: check_url_exists https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: machine_has curldotnet-install: Found a match at https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: The redirect location retrieved: 'https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gz'.dotnet-install: Retrieved primary payload URL from aka.ms link: 'https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gz'.dotnet-install: Downloading using legacy url will not be attempted.dotnet-install: Version: '9.0.101'.dotnet-install: Calling: get_specific_product_version 9.0.101 https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Calling: get_specific_product_version_url 9.0.101 true https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Constructed productVersion link: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/sdk-productVersion.txtdotnet-install: Calling: get_specific_product_version_url 9.0.101 false https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Constructed productVersion link: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/productVersion.txtdotnet-install: Checking for the existence of https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/sdk-productVersion.txtdotnet-install: Calling: machine_has curldotnet-install: Generated 1 links.dotnet-install: Link 0: aka.ms, 9.0.101, https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Payload URLs:dotnet-install: URL #0 - aka.ms: https://dotnetcli.azureedge.net/dotnet/Sdk/9.0.101/dotnet-sdk-9.0.101-linux-x64.tar.gzdotnet-install: Repeatable invocation: ./dotnet-install.sh --version "9.0.101" --install-dir "/home/chethusk/.dotnet" --architecture "x64" --os "linux" --verbose

@baronfel

Copy link
Copy Markdown
MemberAuthor

cc @JanProvaznik / @joeloff

Comment threadsrc/dotnet-install.ps1
Comment threadsrc/dotnet-install.ps1 Outdated
Comment threadsrc/dotnet-install.ps1 Outdated
@baronfel

Copy link
Copy Markdown
MemberAuthor

The test failures here are all just expected changes to the assertions for the tested scenarios. Adding more feeds means more items will exist in the list of possible URLs that will be accessed. I'll need to update the baselines before we can merge this.

@baronfel

Copy link
Copy Markdown
MemberAuthor

Verified (with manually-specified AzureFeed parameters) that when the scripts are targeted against the Azure FrontDoor gnarly URLs that the SDK/Runtime assets are successfully discovered, for both Powershell and Bash. I believe all that's left for this PR is to get the expected values updated for the Bash tests.

Once we have the nice names ready to go, we can remove the gnarly URLs and reinstate the vanity URLs - which will require updating the test expectations again.

@baronfel

Copy link
Copy Markdown
MemberAuthor

New expectations pushed. One thing that would make this easier in the future is that today, a failure (including test failure) in one leg cancels the other two legs. Ideally all would be allowed to run to completion so that fixes could be made in one fell swoop.

@baronfel

Copy link
Copy Markdown
MemberAuthor

Merging now that things are green. Next step is for @mmitche to test in arcade.

@richlander

Copy link
Copy Markdown
Member

dotnet/core#9671

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@baronfel@richlander@joeloff@mmitche