-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Add quality metrics for dotnetup
#52792
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
nagilson
merged 64 commits into
dotnet:release/dnup
from
nagilson:nagilson-dotnetup-telem-otl
Feb 24, 2026
Merged
Changes from 60 commits
Commits
Show all changes
64 commits
Select commit
Hold shift + click to select a range
309aea6
add telemetry - initial phase
nagilson b1db5c0
progress reporters also report telemetry for larger tasks
nagilson 6a1e7c4
--info has telemetry and use custom App I for now
nagilson b62dd81
failures should be properly recorded
nagilson 91e7ad1
catch more detail than just 'exception' for failure
nagilson 4335250
share accepted channel values
nagilson 19942d9
specific error for invalid versions
nagilson dc384ec
add version sanitization tests
nagilson b95c06f
use slnf so tests are found by test explorer in code
nagilson fb9e749
include more specific error details + dev tag for telem
nagilson 6689644
first run notice + library hook guidance + tests
nagilson dc49cd3
base implementation - user error/uncontrolled failure vs our product…
nagilson 28d30a1
consider more failures product failures
nagilson ff0c333
initial telemetry dashboard
nagilson 1d88b21
throw some more specific error types
nagilson d47f984
collect further insights that will drive decisions
nagilson 1105401
error categories should be presentt
nagilson c92b39c
filter metric should be correct
nagilson 6d0ec37
don't track data we don't need or want
nagilson 9df5a81
Include line number for error
nagilson 1977c58
Consolidate logic which generates paths for local dotnetup storage.
nagilson 0941794
Align with CLI existing code for telemetry
nagilson a237d49
Add telemetry notice document
nagilson 60ac35e
PR Feedback round 1
nagilson 765cc87
Demo project for libraries to attach to dotnetup
nagilson 7d825d6
url sanitization
nagilson 3acca2f
Don't show entire stack trace + better version err
nagilson 378bb8e
Don't fail with lock error
nagilson 359dbfe
Merge remote-tracking branch 'upstream/release/dnup' into nagilson-do…
nagilson 80da391
--format json for info but still have custom output option
nagilson 3a32472
merge and add telem for runtime cmd
nagilson 36fb6a9
Dashboard now includes runtime metric
nagilson f7cb435
Some failing tests due to concurrency
nagilson 191dbc1
Consider that CI machines may set NOLOGO
nagilson 9297c6b
Try to avoid breaking fullframework build
nagilson ced1c2d
Allow custom time frame optoin on workbook
nagilson 4f3f1b6
be aware that install path source may be global.json informed
nagilson e7f575e
Record sha for dev builds
nagilson a22bd28
Track and block attempts to install to admin location
nagilson 7eca6f4
Consider fetching more network failure info
nagilson 4b88adf
fix merge conflicts, improve path resolver, muxer telemetry moved
nagilson ba2c7ea
work for other powershell installs besides pwsh
nagilson 041ed4a
pr feedback
nagilson 83e4775
PR Feedback - Separate Error Mapping
nagilson a3bf658
don't assume sdk install anymore, reduce dead code / duplicate impls
nagilson 6f679d0
fix ambiguity
nagilson 0de4847
expect proper mapping to errors in win test
nagilson 1d408c9
nologo in test to prevent first run output
nagilson 04b4dbf
Merge remote-tracking branch 'origin/release/dnup' into nagilson-dotn…
nagilson f9078bf
pr feedback round 1 - simpler changes
nagilson 964f167
hard code tags, consolidate mapping
nagilson 9018884
simplify stack trace collection
nagilson a857a84
PR Feedback - Reduce exception parsing, fix workbook, error telemetry
nagilson 760c689
restore-toolset merge fix
nagilson 705bea0
convert to else if chain for clearer code
nagilson 1f3d599
Instruct on how to run dotnetup for telemetry testing
nagilson a2dd601
workbook improvements
nagilson 2d3273b
catch unauthorized exceptions and handle them differently as product …
nagilson 0a545aa
improve telemetry notice
nagilson 9e280f5
Simplify prerelease version chk
nagilson 290ffb6
PR Feedback - clean up unused, shared code
nagilson bc12fe4
fix merge
nagilson dba6bff
bug fix for preview version with extra '.'
nagilson db052de
Prerelease version validation fix
nagilson File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
110 changes: 110 additions & 0 deletions
110
src/Installer/Microsoft.Dotnet.Installation/DotnetInstallException.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| // Licensed to the .NET Foundation under one or more agreements. | ||
| // The .NET Foundation licenses this file to you under the MIT license. | ||
|
|
||
| namespace Microsoft.Dotnet.Installation; | ||
|
|
||
| /// <summary> | ||
| /// Error codes for .NET installation failures. | ||
| /// </summary> | ||
| public enum DotnetInstallErrorCode | ||
| { | ||
| /// <summary>Unknown error.</summary> | ||
| Unknown, | ||
|
|
||
| /// <summary>The requested version was not found in the releases index.</summary> | ||
| VersionNotFound, | ||
|
|
||
| /// <summary>The requested release was not found.</summary> | ||
| ReleaseNotFound, | ||
|
|
||
| /// <summary>No matching file was found for the platform/architecture.</summary> | ||
| NoMatchingReleaseFileForPlatform, | ||
|
|
||
| /// <summary>Failed to download the archive.</summary> | ||
| DownloadFailed, | ||
|
|
||
| /// <summary>Archive hash verification failed.</summary> | ||
| HashMismatch, | ||
|
|
||
| /// <summary>Failed to extract the archive.</summary> | ||
| ExtractionFailed, | ||
|
|
||
| /// <summary>The channel or version format is invalid.</summary> | ||
| InvalidChannel, | ||
|
|
||
| /// <summary>Network connectivity issue.</summary> | ||
| NetworkError, | ||
|
|
||
| /// <summary>Insufficient permissions.</summary> | ||
| PermissionDenied, | ||
|
|
||
| /// <summary>Disk space issue.</summary> | ||
| DiskFull, | ||
|
|
||
| /// <summary>Failed to fetch the releases manifest from Microsoft servers.</summary> | ||
| ManifestFetchFailed, | ||
|
|
||
| /// <summary>Failed to parse the releases manifest (invalid JSON or schema).</summary> | ||
| ManifestParseFailed, | ||
|
|
||
| /// <summary>The archive file is corrupted or truncated.</summary> | ||
| ArchiveCorrupted, | ||
|
|
||
| /// <summary>Another installation process is already running.</summary> | ||
| InstallationLocked, | ||
|
|
||
| /// <summary>Failed to read/write the dotnetup installation manifest.</summary> | ||
| LocalManifestError, | ||
|
|
||
| /// <summary>The dotnetup installation manifest is corrupted.</summary> | ||
| LocalManifestCorrupted, | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Exception thrown when a .NET installation operation fails. | ||
| /// </summary> | ||
| public class DotnetInstallException : Exception | ||
| { | ||
| /// <summary> | ||
| /// Gets the error code for this exception. | ||
| /// </summary> | ||
| public DotnetInstallErrorCode ErrorCode { get; } | ||
|
|
||
| /// <summary> | ||
| /// Gets the version that was being installed, if applicable. | ||
| /// </summary> | ||
| public string? Version { get; } | ||
|
|
||
| /// <summary> | ||
| /// Gets the component being installed (SDK, Runtime, etc.). | ||
| /// </summary> | ||
| public string? Component { get; } | ||
|
|
||
| public DotnetInstallException(DotnetInstallErrorCode errorCode, string message) | ||
| : base(message) | ||
| { | ||
| ErrorCode = errorCode; | ||
| } | ||
|
|
||
| public DotnetInstallException(DotnetInstallErrorCode errorCode, string message, Exception innerException) | ||
| : base(message, innerException) | ||
| { | ||
| ErrorCode = errorCode; | ||
| } | ||
|
|
||
| public DotnetInstallException(DotnetInstallErrorCode errorCode, string message, string? version = null, string? component = null) | ||
| : base(message) | ||
| { | ||
| ErrorCode = errorCode; | ||
| Version = version; | ||
| Component = component; | ||
| } | ||
|
|
||
| public DotnetInstallException(DotnetInstallErrorCode errorCode, string message, Exception innerException, string? version = null, string? component = null) | ||
| : base(message, innerException) | ||
| { | ||
| ErrorCode = errorCode; | ||
| Version = version; | ||
| Component = component; | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.