From a023bf252c7d58cbeea15626369f59773ce32139 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 16:37:15 -0700 Subject: [PATCH 01/34] Bump actions/upload-artifact from 4.6.2 to 5.0.0 (#8682) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.2 to 5.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/ea165f8d65b6e75b540449e92b4886f43607fa02...330a01c490aca151604b8cf639adc76d48f6c5d4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/scan-for-to-do-comments.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scan-for-to-do-comments.yml b/.github/workflows/scan-for-to-do-comments.yml index c02f46b08c5..94f948d7384 100644 --- a/.github/workflows/scan-for-to-do-comments.yml +++ b/.github/workflows/scan-for-to-do-comments.yml @@ -27,7 +27,7 @@ jobs: COMMENT_AUTHOR: ${{ github.event.comment.user.login }} - name: Upload artifacts - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: name: issue-todo path: issue/ From 4ccaaf4d94564c4b0589b7edce847a4dde2f4e6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 17:14:07 -0700 Subject: [PATCH 02/34] Bump streetsidesoftware/cspell-action from 7.2.0 to 7.2.1 (#8681) Bumps [streetsidesoftware/cspell-action](https://github.com/streetsidesoftware/cspell-action) from 7.2.0 to 7.2.1. - [Release notes](https://github.com/streetsidesoftware/cspell-action/releases) - [Changelog](https://github.com/streetsidesoftware/cspell-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/streetsidesoftware/cspell-action/compare/dcd03dc3e8a59ec2e360d0c62db517baa0b4bb6d...76c6f6d52abd57f4bcab5f3fde1bbd4f19a99eb0) --- updated-dependencies: - dependency-name: streetsidesoftware/cspell-action dependency-version: 7.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/spellcheck.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index ded1d6c9593..e8b21a4ff78 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -17,7 +17,7 @@ jobs: with: persist-credentials: false - - uses: streetsidesoftware/cspell-action@dcd03dc3e8a59ec2e360d0c62db517baa0b4bb6d + - uses: streetsidesoftware/cspell-action@76c6f6d52abd57f4bcab5f3fde1bbd4f19a99eb0 name: Documentation spellcheck if: ${{ !cancelled() }} with: @@ -25,7 +25,7 @@ jobs: inline: error incremental_files_only: true - - uses: streetsidesoftware/cspell-action@dcd03dc3e8a59ec2e360d0c62db517baa0b4bb6d + - uses: streetsidesoftware/cspell-action@76c6f6d52abd57f4bcab5f3fde1bbd4f19a99eb0 name: Resx spellcheck if: ${{ !cancelled() }} with: @@ -33,7 +33,7 @@ jobs: inline: error incremental_files_only: true - - uses: streetsidesoftware/cspell-action@dcd03dc3e8a59ec2e360d0c62db517baa0b4bb6d + - uses: streetsidesoftware/cspell-action@76c6f6d52abd57f4bcab5f3fde1bbd4f19a99eb0 name: Source code spellcheck if: ${{ !cancelled() }} with: From 28b89e4094e516b5d3c710febe65513370228af3 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Tue, 28 Oct 2025 09:41:08 -0700 Subject: [PATCH 03/34] Use arcade backport workflow (#8683) --- .github/workflows/backport.yml | 56 ++------- eng/actions/backport/action.yml | 26 ----- eng/actions/backport/index.js | 200 -------------------------------- 3 files changed, 10 insertions(+), 272 deletions(-) delete mode 100644 eng/actions/backport/action.yml delete mode 100644 eng/actions/backport/index.js diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index e7a8a7f64d9..bde08ba8dec 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -2,53 +2,17 @@ name: Backport PR to branch on: issue_comment: types: [created] + schedule: + # once a day at 13:00 UTC to cleanup old runs + - cron: '0 13 * * *' -permissions: {} +permissions: + contents: write + issues: write + pull-requests: write + actions: write jobs: backport: - if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/backport to') && contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) - runs-on: ubuntu-24.04 - permissions: - contents: write - issues: write - pull-requests: write - - steps: - - name: Extract backport target branch - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd - id: target-branch-extractor - with: - result-encoding: string - script: | - if (context.eventName !== "issue_comment") throw "Error: This action only works on issue_comment events."; - - // extract the target branch name from the trigger phrase containing these characters: a-z, A-Z, digits, forward slash, dot, hyphen, underscore - const regex = /\/backport to ([a-zA-Z\d\/\.\-\_]+)/; - target_branch = regex.exec(context.payload.comment.body); - if (target_branch == null) throw "Error: No backport branch found in the trigger phrase."; - - return target_branch[1]; - - name: Post backport started comment to pull request - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd - with: - script: | - const backport_start_body = `Started backporting to ${{ steps.target-branch-extractor.outputs.result }}: https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${process.env.GITHUB_RUN_ID}`; - await github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: backport_start_body - }); - - name: Checkout repo - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 - with: - persist-credentials: true # We need to persist credentials to push the resulting changes upstream. - fetch-depth: 0 - - name: Run backport - uses: ./eng/actions/backport - with: - target_branch: ${{ steps.target-branch-extractor.outputs.result }} - auth_token: ${{ secrets.GITHUB_TOKEN }} - exclude: 'documentation/**.md' - label: backport + if: ${{ contains(github.event.comment.body, '/backport to') || github.event_name == 'schedule' }} + uses: dotnet/arcade/.github/workflows/backport-base.yml@main diff --git a/eng/actions/backport/action.yml b/eng/actions/backport/action.yml deleted file mode 100644 index 6583c0f4b02..00000000000 --- a/eng/actions/backport/action.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: 'PR Backporter' -description: 'Backports a pull request to a branch using the "/backport to " comment' -inputs: - target_branch: - description: 'Backport target branch.' - auth_token: - description: 'The token used to authenticate to GitHub.' - pr_title_template: - description: 'The template used for the PR title. Special placeholder tokens that will be replaced with a value: %target_branch%, %source_pr_title%, %source_pr_number%, %cc_users%.' - default: '[%target_branch%] %source_pr_title%' - pr_description_template: - description: 'The template used for the PR description. Special placeholder tokens that will be replaced with a value: %target_branch%, %source_pr_title%, %source_pr_number%, %cc_users%.' - default: | - Backport of #%source_pr_number% to %target_branch% - - /cc %cc_users% - exclude: - description: 'Path to exclude from the backport. Supports wildcards.' - required: false - label: - description: 'Label to add to the PR.' - required: false - -runs: - using: 'node16' - main: 'index.js' diff --git a/eng/actions/backport/index.js b/eng/actions/backport/index.js deleted file mode 100644 index 47b9fc695f5..00000000000 --- a/eng/actions/backport/index.js +++ /dev/null @@ -1,200 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -function BackportException(message, postToGitHub = true) { - this.message = message; - this.postToGitHub = postToGitHub; -} - -async function run() { - const actionUtils = require('../../../.github/actions/action-utils.js'); - const [core, github, exec] = await actionUtils.installAndRequirePackages("@actions/core", "@actions/github", "@actions/exec"); - - const repo_owner = github.context.payload.repository.owner.login; - const repo_name = github.context.payload.repository.name; - const pr_number = github.context.payload.issue.number; - const comment_user = github.context.payload.comment.user.login; - - let octokit = github.getOctokit(core.getInput("auth_token", { required: true })); - let target_branch = core.getInput("target_branch", { required: true }); - let pr_label = core.getInput("label", { required: false }); - let excluded_path = core.getInput("exclude", { required: false }); - - try { - // verify the comment user is a repo collaborator - try { - await octokit.rest.repos.checkCollaborator({ - owner: repo_owner, - repo: repo_name, - username: comment_user - }); - console.log(`Verified ${comment_user} is a repo collaborator.`); - } catch (error) { - console.log(error); - throw new BackportException(`Error: @${comment_user} is not a repo collaborator, backporting is not allowed.`); - } - - try { await exec.exec(`git ls-remote --exit-code --heads origin ${target_branch}`) } catch { throw new BackportException(`Error: The specified backport target branch ${target_branch} wasn't found in the repo.`); } - console.log(`Backport target branch: ${target_branch}`); - - console.log("Applying backport patch"); - - await exec.exec(`git checkout ${target_branch}`); - await exec.exec(`git clean -xdff`); - - // configure git - await exec.exec(`git config user.name "github-actions"`); - await exec.exec(`git config user.email "github-actions@github.com"`); - - // create temporary backport branch - const temp_branch = `backport/pr-${pr_number}-to-${target_branch}`; - await exec.exec(`git checkout -b ${temp_branch}`); - - // skip opening PR if the branch already exists on the origin remote since that means it was opened - // by an earlier backport and force pushing to the branch updates the existing PR - let should_open_pull_request = true; - try { - await exec.exec(`git ls-remote --exit-code --heads origin ${temp_branch}`); - should_open_pull_request = false; - } catch { } - - // download and apply patch. - - // Prefer the merge or squash commit when possible as it'll have the most up-to-date patch context for long-running branches - const pr_context = github.context.payload.issue.pull_request; - let patch_url = `${pr_context.patch_url}`; - - try { - const pr = (await octokit.rest.pulls.get({ - owner: repo_owner, - repo: repo_name, - pull_number: pr_number - })).data; - - if (pr.merged === true && pr.merge_commit_sha !== null) { - patch_url = `${pr.base.repo.html_url}/commit/${pr.merge_commit_sha}.patch`; - } - } catch (error) { - console.log(`Failed to get PR information, falling back to unmerged patch. Error: ${error}`); - } - - await exec.exec(`curl -sSL "${patch_url}" --output changes.patch`); - - const git_am_command_without_patch = `git am --3way --ignore-whitespace --exclude="${excluded_path}" --keep-non-patch`; - const git_am_command = `${git_am_command_without_patch} changes.patch`; - let git_am_output = `$ ${git_am_command}\n\n`; - let git_am_failed = false; - try { - await exec.exec(git_am_command, [], { - listeners: { - stdout: function stdout(data) { git_am_output += data; }, - stderr: function stderr(data) { git_am_output += data; } - } - }); - } catch (error) { - git_am_output += error; - git_am_failed = true; - } - - if (git_am_failed) { - const git_am_failed_body = ` -@${github.context.payload.comment.user.login} backporting to ${target_branch} failed, the patch most likely resulted in conflicts. - -Please backport manually using one of the below commands, followed by \`git am --continue\` once the merge conflict has been resolved. - -PowerShell -\`\`\`ps1 -(Invoke-WebRequest "${patch_url}").Content | ${git_am_command_without_patch} -\`\`\` - -Bash -\`\`\`shell -curl -sSL "${patch_url}" | ${git_am_command_without_patch} -\`\`\` - - ---- -\`git am\` error output: - -\`\`\`shell -${git_am_output} -\`\`\` -`; - - await octokit.rest.issues.createComment({ - owner: repo_owner, - repo: repo_name, - issue_number: pr_number, - body: git_am_failed_body - }); - throw new BackportException("Error: git am failed, most likely due to a merge conflict.", false); - } - else { - // push the temp branch to the repository - await exec.exec(`git push --force --set-upstream origin HEAD:${temp_branch}`); - } - - if (!should_open_pull_request) { - console.log("Backport temp branch already exists, skipping opening a PR."); - return; - } - - // prepate the GitHub PR details - let backport_pr_title = core.getInput("pr_title_template"); - let backport_pr_description = core.getInput("pr_description_template"); - - // get users to cc (append PR author if different from user who issued the backport command) - let cc_users = `@${comment_user}`; - if (comment_user != github.context.payload.issue.user.login) cc_users += ` @${github.context.payload.issue.user.login}`; - - // replace the special placeholder tokens with values - backport_pr_title = backport_pr_title - .replace(/%target_branch%/g, target_branch) - .replace(/%source_pr_title%/g, github.context.payload.issue.title) - .replace(/%source_pr_number%/g, github.context.payload.issue.number) - .replace(/%cc_users%/g, cc_users); - - backport_pr_description = backport_pr_description - .replace(/%target_branch%/g, target_branch) - .replace(/%source_pr_title%/g, github.context.payload.issue.title) - .replace(/%source_pr_number%/g, github.context.payload.issue.number) - .replace(/%cc_users%/g, cc_users); - - // open the GitHub PR - const pr = await octokit.rest.pulls.create({ - owner: repo_owner, - repo: repo_name, - title: backport_pr_title, - body: backport_pr_description, - head: temp_branch, - base: target_branch - }); - - if (pr_label.length !== 0) { - await octokit.rest.issues.addLabels({ - owner: repo_owner, - repo: repo_name, - issue_number: pr.data.number, - labels: [pr_label], - }); - } - - console.log("Successfully opened the GitHub PR."); - } catch (error) { - - core.setFailed(error); - - if (error.postToGitHub === undefined || error.postToGitHub == true) { - // post failure to GitHub comment - const unknown_error_body = `@${comment_user} an error occurred while backporting to ${target_branch}, please check the run log for details!\n\n${error.message}`; - await octokit.rest.issues.createComment({ - owner: repo_owner, - repo: repo_name, - issue_number: pr_number, - body: unknown_error_body - }); - } - } -} - -run(); From aaa60fe22a7a1e3585962500576197b082803c26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 16:55:10 -0700 Subject: [PATCH 04/34] [main] Bump the identity-dependencies group with 1 update (#8666) Bumps Microsoft.Identity.Web from 3.14.1 to 4.0.1 --- updated-dependencies: - dependency-name: Microsoft.Identity.Web dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: identity-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/independent/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/independent/Versions.props b/eng/dependabot/independent/Versions.props index 0238018e967..ba6d198fa16 100644 --- a/eng/dependabot/independent/Versions.props +++ b/eng/dependabot/independent/Versions.props @@ -6,7 +6,7 @@ 1.17.0 12.26.0 12.24.0 - 3.14.1 + 4.0.1 1.6.28 4.3.2 5.0.0 From de9b2ea7b9423029f655819447ff9a5c7e4e7f96 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 09:04:22 -0700 Subject: [PATCH 05/34] [main] Bump Newtonsoft.Json from 13.0.3 to 13.0.4 (#8670) --- updated-dependencies: - dependency-name: Newtonsoft.Json dependency-version: 13.0.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/independent/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/independent/Versions.props b/eng/dependabot/independent/Versions.props index ba6d198fa16..8e6a36da093 100644 --- a/eng/dependabot/independent/Versions.props +++ b/eng/dependabot/independent/Versions.props @@ -12,7 +12,7 @@ 5.0.0 - 13.0.3 + 13.0.4 11.0.0 4.0.0.3 4.0.0.2 From 40ed5b3107e7eb3aed195c97d455abef94a70664 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 14:09:24 -0800 Subject: [PATCH 06/34] Update Learning Paths (#8693) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/learning-path-sha.txt | 2 +- documentation/learningPath/aks.md | 2 +- documentation/learningPath/api.md | 10 ++-- documentation/learningPath/collectionrules.md | 30 +++++----- documentation/learningPath/configuration.md | 16 +++--- documentation/learningPath/egress.md | 22 ++++---- documentation/learningPath/testing.md | 56 +++++++++---------- 7 files changed, 69 insertions(+), 69 deletions(-) diff --git a/.github/learning-path-sha.txt b/.github/learning-path-sha.txt index 2eef97d76bb..e0446ea9a9b 100644 --- a/.github/learning-path-sha.txt +++ b/.github/learning-path-sha.txt @@ -1 +1 @@ -718d214708c2cbe7bc70fc7cbf2694c11b43a9e9 \ No newline at end of file +de9b2ea7b9423029f655819447ff9a5c7e4e7f96 \ No newline at end of file diff --git a/documentation/learningPath/aks.md b/documentation/learningPath/aks.md index cfd3be1daa0..2d51067b331 100644 --- a/documentation/learningPath/aks.md +++ b/documentation/learningPath/aks.md @@ -6,7 +6,7 @@ In addition to its availability as a .NET CLI tool, the `dotnet monitor` tool is This workflow takes your local development copy of `dotnet-monitor`, patches it with a local development copy of the [.NET Core Diagnostics Repo](https://github.com/dotnet/diagnostics#net-core-diagnostics-repo), and makes it available as an image for you to consume in an ACR (Azure Container Registry). Note that there are many other ways to do this - this is meant to serve as a basic template that can be adapted to match your needs. -1. Open `pwsh` and run the [generate-dev-sln script](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/generate-dev-sln.ps1), providing a path to your local copy of the diagnostics repo. +1. Open `pwsh` and run the [generate-dev-sln script](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/generate-dev-sln.ps1), providing a path to your local copy of the diagnostics repo. > [!NOTE] > If your changes do not involve the [.NET Core Diagnostics Repo](https://github.com/dotnet/diagnostics#net-core-diagnostics-repo), you don't need to complete this step. diff --git a/documentation/learningPath/api.md b/documentation/learningPath/api.md index 0eceff51ce7..e02214f933d 100644 --- a/documentation/learningPath/api.md +++ b/documentation/learningPath/api.md @@ -4,15 +4,15 @@ dotnet-monitor exposes functionality through both [collection rules](./collectio ## Adding New APIs -The web API surface is defined by a series of controllers [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/Controllers/). It's common for an API to expose functionality also available via [Actions](./collectionrules.md#actions) and so methods in these controllers are often wrappers around a shared implementation. Each controller may have one or more attributes that configure how and where it is exposed, you can learn more about the notable controller attributes [here](#notable-controller-attributes). +The web API surface is defined by a series of controllers [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/Controllers/). It's common for an API to expose functionality also available via [Actions](./collectionrules.md#actions) and so methods in these controllers are often wrappers around a shared implementation. Each controller may have one or more attributes that configure how and where it is exposed, you can learn more about the notable controller attributes [here](#notable-controller-attributes). -If the new API needs to either accept or return structured data, a dedicated model should be used. Models are defined [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/Models/). +If the new API needs to either accept or return structured data, a dedicated model should be used. Models are defined [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/Models/). When adding a new API, it's important to also update the [`openapi.json`](../openapi.json) spec which describes the API surface. There are CI tests that will ensure this file has been updated to reflect any API changes. Learn more about updating `openapi.json` [here](./testing.md#openapi-generation). ### Adding Tests -Web APIs in dotnet-monitor are typically tested using functional tests that leverage the [ApiClient](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests/HttpApi/ApiClient.cs) to call a specific API. Learn more about how the functional tests are defined and operate [here](./testing.md#functional-tests). +Web APIs in dotnet-monitor are typically tested using functional tests that leverage the [ApiClient](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests/HttpApi/ApiClient.cs) to call a specific API. Learn more about how the functional tests are defined and operate [here](./testing.md#functional-tests). ## Notable Controller Attributes @@ -32,6 +32,6 @@ dotnet-monitor supports multiple different [authentication modes](../authenticat ### Determining Authentication Mode -When dotnet-monitor starts, the command line arguments are first inspected to see if a specific authentication mode was set (such as `--no-auth`), referred to as the `StartupAuthenticationMode`, this is calculated [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Commands/CollectCommandHandler.cs#L28). If no modes were explicitly set via a command line argument, dotnet-monitor will select `Deferred` as the `StartupAuthenticationMode`. This indicates that the user configuration should be looked at to determine the authentication mode later on in the startup process. +When dotnet-monitor starts, the command line arguments are first inspected to see if a specific authentication mode was set (such as `--no-auth`), referred to as the `StartupAuthenticationMode`, this is calculated [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Commands/CollectCommandHandler.cs#L28). If no modes were explicitly set via a command line argument, dotnet-monitor will select `Deferred` as the `StartupAuthenticationMode`. This indicates that the user configuration should be looked at to determine the authentication mode later on in the startup process. -After determining the `StartupAuthenticationMode` mode, the relevant [IAuthenticationConfigurator](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Auth/IAuthenticationConfigurator.cs) is created by the [AuthConfiguratorFactory](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Auth/AuthConfiguratorFactory.cs). This factory also handles deciding what authentication mode to use when `StartupAuthenticationMode` is `Deferred`. The selected configurator is used to configure various parts of dotnet-monitor that are specific to authentication, such as protecting the web APIs and adding authentication-mode specific logging. +After determining the `StartupAuthenticationMode` mode, the relevant [IAuthenticationConfigurator](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Auth/IAuthenticationConfigurator.cs) is created by the [AuthConfiguratorFactory](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Auth/AuthConfiguratorFactory.cs). This factory also handles deciding what authentication mode to use when `StartupAuthenticationMode` is `Deferred`. The selected configurator is used to configure various parts of dotnet-monitor that are specific to authentication, such as protecting the web APIs and adding authentication-mode specific logging. diff --git a/documentation/learningPath/collectionrules.md b/documentation/learningPath/collectionrules.md index 8673ba88849..24f69dc2000 100644 --- a/documentation/learningPath/collectionrules.md +++ b/documentation/learningPath/collectionrules.md @@ -29,49 +29,49 @@ graph LR ### Key Areas Of The Code -* Collection rules are registered [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs#L141). When adding a new trigger or action, these types need to be added here to take effect. This section is also responsible for making sure options get configured and validated. -* Options for collection rules can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleOptions.cs). -* Rules are applied, removed, and restarted in response to configuration changes [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/CollectionRuleService.cs). This is also responsible for generating a description of each collection rule's state for the `/collectionrules` API Endpoint. -* The pipeline responsible for the lifetime of a single executing collection rule can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L56). -* To run collection rules, `dotnet monitor` must be in `Listen` mode - this is set via [DiagnosticPortOptions](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Options/DiagnosticPortOptions.cs). +* Collection rules are registered [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs#L141). When adding a new trigger or action, these types need to be added here to take effect. This section is also responsible for making sure options get configured and validated. +* Options for collection rules can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleOptions.cs). +* Rules are applied, removed, and restarted in response to configuration changes [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/CollectionRuleService.cs). This is also responsible for generating a description of each collection rule's state for the `/collectionrules` API Endpoint. +* The pipeline responsible for the lifetime of a single executing collection rule can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L56). +* To run collection rules, `dotnet monitor` must be in `Listen` mode - this is set via [DiagnosticPortOptions](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Options/DiagnosticPortOptions.cs). * For each type of trigger, the [dotnet diagnostics repo](https://github.com/dotnet/diagnostics/blob/v6.0.351802/src/Microsoft.Diagnostics.Monitoring.EventPipe/Triggers/ITraceEventTrigger.cs#L29) is responsible for determining whether the triggering conditions have been satisfied. ### Triggers -A trigger will monitor for a specific condition in the target application and raise a notification when that condition has been observed. Options for triggers can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleTriggerOptions.cs); the type of `Settings` is determined by which trigger is being used (possible trigger types can be found [here](https://github.com/dotnet/dotnet-monitor/tree/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/Triggers)). The interface for all triggers can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Triggers/ICollectionRuleTrigger.cs) - this allows `dotnet monitor` to start and stop triggers, regardless of the trigger's properties. The collection rule pipeline creates instances of triggers [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L101) before waiting for the trigger to [satisfy its conditions](https://github.com/dotnet/diagnostics/blob/v6.0.351802/src/Microsoft.Diagnostics.Monitoring.EventPipe/Triggers/Pipelines/TraceEventTriggerPipeline.cs#L107) - each trigger has its own set of criteria that determines when a trigger has been satisfied. +A trigger will monitor for a specific condition in the target application and raise a notification when that condition has been observed. Options for triggers can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleTriggerOptions.cs); the type of `Settings` is determined by which trigger is being used (possible trigger types can be found [here](https://github.com/dotnet/dotnet-monitor/tree/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/Triggers)). The interface for all triggers can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Triggers/ICollectionRuleTrigger.cs) - this allows `dotnet monitor` to start and stop triggers, regardless of the trigger's properties. The collection rule pipeline creates instances of triggers [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L101) before waiting for the trigger to [satisfy its conditions](https://github.com/dotnet/diagnostics/blob/v6.0.351802/src/Microsoft.Diagnostics.Monitoring.EventPipe/Triggers/Pipelines/TraceEventTriggerPipeline.cs#L107) - each trigger has its own set of criteria that determines when a trigger has been satisfied. ### Actions -Actions allow executing an operation or an external executable in response to a trigger condition being satisfied. Options for actions can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleActionOptions.cs); the type of `Settings` is determined by which action is being used (possible action types can be found [here](https://github.com/dotnet/dotnet-monitor/tree/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/Actions)). The interface for all actions can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Actions/ICollectionRuleAction.cs) - this allows `dotnet monitor` to start an action, wait for it to complete, and get its output values regardless of the action's properties. The action list is [executed](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L155) once the triggering condition has been met (assuming the action list isn't throttled), with each action by default starting without waiting for prior actions to complete. +Actions allow executing an operation or an external executable in response to a trigger condition being satisfied. Options for actions can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleActionOptions.cs); the type of `Settings` is determined by which action is being used (possible action types can be found [here](https://github.com/dotnet/dotnet-monitor/tree/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/Actions)). The interface for all actions can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Actions/ICollectionRuleAction.cs) - this allows `dotnet monitor` to start an action, wait for it to complete, and get its output values regardless of the action's properties. The action list is [executed](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L155) once the triggering condition has been met (assuming the action list isn't throttled), with each action by default starting without waiting for prior actions to complete. ### Filters -Filters can optionally be applied to a collection rule to choose which processes can trigger the rule. This uses the same set of [options](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Options/ProcessFilterOptions.cs#L48) as setting the default process for `dotnet-monitor`. When starting a collection rule, [these filters are used to check if the current process should have the collection rule applied to it](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/CollectionRuleContainer.cs#L186); if so, the collection rule starts. +Filters can optionally be applied to a collection rule to choose which processes can trigger the rule. This uses the same set of [options](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Options/ProcessFilterOptions.cs#L48) as setting the default process for `dotnet-monitor`. When starting a collection rule, [these filters are used to check if the current process should have the collection rule applied to it](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/CollectionRuleContainer.cs#L186); if so, the collection rule starts. ### Limits -Limits can optionally be applied to a collection rule to constrain the lifetime of the rule and how often its actions can be run before being throttled. Options for limits can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleLimitsOptions.cs). When provided (or when using default values), limits are evaluated in the collection rule pipeline while running. `RuleDuration` is used to [create a token](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L81) that shuts down the pipeline. `ActionCountSlidingWindowDuration` does not rely on setting cancellation tokens; rather, the number of executions within the sliding window are checked on-demand [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs#L211), and `ActionCount` is referenced to determine whether the rule needs to [terminate](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs#L194) or [throttle](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs#L234). +Limits can optionally be applied to a collection rule to constrain the lifetime of the rule and how often its actions can be run before being throttled. Options for limits can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleLimitsOptions.cs). When provided (or when using default values), limits are evaluated in the collection rule pipeline while running. `RuleDuration` is used to [create a token](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/CollectionRulePipeline.cs#L81) that shuts down the pipeline. `ActionCountSlidingWindowDuration` does not rely on setting cancellation tokens; rather, the number of executions within the sliding window are checked on-demand [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs#L211), and `ActionCount` is referenced to determine whether the rule needs to [terminate](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs#L194) or [throttle](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs#L234). ## Miscellaneous ### Trigger Shortcuts -Trigger Shortcuts provide improved defaults, range validation, and a simpler syntax for [several commonly used `EventCounter` triggers](https://github.com/dotnet/dotnet-monitor/tree/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/Triggers/EventCounterShortcuts). These shortcuts provide the same functionality as using the standard `EventCounter` syntax, but have fewer available options (since there is no need to specify the `ProviderName` or the `CounterName`) - as a result, shortcuts do not inherit from `EventCounterOptions`, but rather [IEventCounterShortcuts](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/Triggers/EventCounterShortcuts/IEventCounterShortcuts.cs). Each type of shortcut is registered independently [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs#L159). After binding with configuration and undergoing validation, shortcuts are then converted to be treated as `EventCounter` triggers [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Triggers/EventCounterTriggerFactory.cs), using their respective defaults instead of the generic ones. +Trigger Shortcuts provide improved defaults, range validation, and a simpler syntax for [several commonly used `EventCounter` triggers](https://github.com/dotnet/dotnet-monitor/tree/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/Triggers/EventCounterShortcuts). These shortcuts provide the same functionality as using the standard `EventCounter` syntax, but have fewer available options (since there is no need to specify the `ProviderName` or the `CounterName`) - as a result, shortcuts do not inherit from `EventCounterOptions`, but rather [IEventCounterShortcuts](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/Triggers/EventCounterShortcuts/IEventCounterShortcuts.cs). Each type of shortcut is registered independently [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs#L159). After binding with configuration and undergoing validation, shortcuts are then converted to be treated as `EventCounter` triggers [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Triggers/EventCounterTriggerFactory.cs), using their respective defaults instead of the generic ones. ### Templates -Templates allow users to design reusable collection rule components by associating a name with a piece of configuration. Options for templates can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/TemplateOptions.cs). Before collection rules undergo validation, `dotnet monitor` checks to see if any of the rule's components in configuration [list the name of a template](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Configuration/CollectionRulePostConfigureNamedOptions.cs) - if so, the collection rule's options are populated from the correspondingly named template. Note that templates undergo the same binding process for triggers/actions as collection rules; however, since templates are treated as separate parts of configuration, this binding instead happens [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Configuration/TemplatesConfigureNamedOptions.cs). +Templates allow users to design reusable collection rule components by associating a name with a piece of configuration. Options for templates can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/TemplateOptions.cs). Before collection rules undergo validation, `dotnet monitor` checks to see if any of the rule's components in configuration [list the name of a template](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Configuration/CollectionRulePostConfigureNamedOptions.cs) - if so, the collection rule's options are populated from the correspondingly named template. Note that templates undergo the same binding process for triggers/actions as collection rules; however, since templates are treated as separate parts of configuration, this binding instead happens [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Configuration/TemplatesConfigureNamedOptions.cs). ### Collection Rule Defaults -Defaults can be used to limit the verbosity of configuration, allowing frequently used values for collection rules to be assigned as defaults. Options for collection rule defaults can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleDefaultsOptions.cs). These defaults are merged with the user's provided configuration [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/CollectionRules/Options/DefaultCollectionRulePostConfigureOptions.cs) - any properties that the user hasn't set (that have corresponding default values) will be updated at this point to use the default values. This step occurs prior to `dotnet monitor` attempting to use its built-in defaults, which allows user defaults to take precedence. +Defaults can be used to limit the verbosity of configuration, allowing frequently used values for collection rules to be assigned as defaults. Options for collection rule defaults can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/CollectionRuleDefaultsOptions.cs). These defaults are merged with the user's provided configuration [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/CollectionRules/Options/DefaultCollectionRulePostConfigureOptions.cs) - any properties that the user hasn't set (that have corresponding default values) will be updated at this point to use the default values. This step occurs prior to `dotnet monitor` attempting to use its built-in defaults, which allows user defaults to take precedence. ### Collection Rule API Endpoint -The Collection Rule API Endpoint allows users to get information about the state of their collection rules, providing general information [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/Controllers/DiagController.cs#L500) and more specific information about a particular rule [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/Controllers/DiagController.cs#L522). **This API is solely for viewing the current state of rules, not altering state**. +The Collection Rule API Endpoint allows users to get information about the state of their collection rules, providing general information [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/Controllers/DiagController.cs#L500) and more specific information about a particular rule [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/Controllers/DiagController.cs#L522). **This API is solely for viewing the current state of rules, not altering state**. -Each collection rule pipeline has a [state holder](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs) that keeps track of the rule's execution. By keeping track of the pipeline's state in real-time, this state doesn't need to be calculated in response to a user hitting the `/collectionrules` endpoint. However, other user-facing information, such as countdowns, are calculated on-demand - these values are solely for display purposes and not used by `dotnet-monitor` when determining when to change state (see [Limits](#limits) for more information). +Each collection rule pipeline has a [state holder](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/CollectionRulePipelineState.cs) that keeps track of the rule's execution. By keeping track of the pipeline's state in real-time, this state doesn't need to be calculated in response to a user hitting the `/collectionrules` endpoint. However, other user-facing information, such as countdowns, are calculated on-demand - these values are solely for display purposes and not used by `dotnet-monitor` when determining when to change state (see [Limits](#limits) for more information). ## Keeping Documentation Up-To-Date -When making changes to collection rules that require updates to configuration, these changes should be added [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/configuration/collection-rule-configuration.md). Additional information on collection rules and examples can be provided [here](https://github.com/dotnet/dotnet-monitor/tree/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/collectionrules). +When making changes to collection rules that require updates to configuration, these changes should be added [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/configuration/collection-rule-configuration.md). Additional information on collection rules and examples can be provided [here](https://github.com/dotnet/dotnet-monitor/tree/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/collectionrules). diff --git a/documentation/learningPath/configuration.md b/documentation/learningPath/configuration.md index 93596aa719a..054075f44a8 100644 --- a/documentation/learningPath/configuration.md +++ b/documentation/learningPath/configuration.md @@ -4,22 +4,22 @@ ## How Configuration Works -`dotnet-monitor` accepts configuration from several different sources, and must [combine these sources for the host builder](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/HostBuilder/HostBuilderHelper.cs#L48). Configuration sources are added in the order of lowest to highest precedence - meaning that if there is a conflict between a property in two configuration sources, the property found in the latter configuration source will be used. +`dotnet-monitor` accepts configuration from several different sources, and must [combine these sources for the host builder](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/HostBuilder/HostBuilderHelper.cs#L48). Configuration sources are added in the order of lowest to highest precedence - meaning that if there is a conflict between a property in two configuration sources, the property found in the latter configuration source will be used. -To see the merged configuration, the user can run the `config show` command (see [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Program.cs#L71) and [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Commands/ConfigShowCommandHandler.cs)); the `--show-sources` flag can be used to reveal which configuration source is responsible for each property. The `config show` command's output is [written out as JSON](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/ConfigurationJsonWriter.cs); this section must be manually updated whenever new options are added (or existing options are changed). +To see the merged configuration, the user can run the `config show` command (see [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Program.cs#L71) and [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Commands/ConfigShowCommandHandler.cs)); the `--show-sources` flag can be used to reveal which configuration source is responsible for each property. The `config show` command's output is [written out as JSON](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/ConfigurationJsonWriter.cs); this section must be manually updated whenever new options are added (or existing options are changed). -Once configuration has been merged, any singletons that have been added to the `IServiceCollection` (see [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs) and [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Commands/CollectCommandHandler.cs#L84)), such as `IConfigureOptions`, `IPostConfigureOptions`, and `IValidateOptions`, are called when an object of that type is first used, **not on startup**. This step is often used to incorporate defaults for properties that were not explicitly set by configuration, or to validate that options were set correctly. +Once configuration has been merged, any singletons that have been added to the `IServiceCollection` (see [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs) and [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Commands/CollectCommandHandler.cs#L84)), such as `IConfigureOptions`, `IPostConfigureOptions`, and `IValidateOptions`, are called when an object of that type is first used, **not on startup**. This step is often used to incorporate defaults for properties that were not explicitly set by configuration, or to validate that options were set correctly. -Any changes to the configuration need to be propagated to the [schema](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/schema.json). **The updated schema should be generated automatically; you should never need to manually edit the JSON.** To update the schema in Visual Studio: -* Set [Microsoft.Diagnostics.Monitoring.ConfigurationSchema](https://github.com/dotnet/dotnet-monitor/tree/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema) as the startup project +Any changes to the configuration need to be propagated to the [schema](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/schema.json). **The updated schema should be generated automatically; you should never need to manually edit the JSON.** To update the schema in Visual Studio: +* Set [Microsoft.Diagnostics.Monitoring.ConfigurationSchema](https://github.com/dotnet/dotnet-monitor/tree/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema) as the startup project * Build the project, with a single command-line argument for the schema's absolute path -* Validate that the schema was correctly updated using the tests in [Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests](https://github.com/dotnet/dotnet-monitor/tree/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests) +* Validate that the schema was correctly updated using the tests in [Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests](https://github.com/dotnet/dotnet-monitor/tree/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests) ## Keeping Documentation Up-To-Date -Our configuration is primarily documented [here](https://github.com/dotnet/dotnet-monitor/tree/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/configuration). Sections are typically comprised of: +Our configuration is primarily documented [here](https://github.com/dotnet/dotnet-monitor/tree/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/configuration). Sections are typically comprised of: * A brief overview of the feature that is being configured * Configuration samples in all supported formats * A list of properties with descriptions, types, and whether a property is required -Types are defined in [definitions.md](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/api/definitions.md), and additional information about configuring collection rules can be found in the [collection rules](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/collectionrules) directory. Where appropriate, indicate if configuration only pertains to a specific version of `dotnet-monitor` (e.g. `7.0+`). +Types are defined in [definitions.md](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/api/definitions.md), and additional information about configuring collection rules can be found in the [collection rules](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/collectionrules) directory. Where appropriate, indicate if configuration only pertains to a specific version of `dotnet-monitor` (e.g. `7.0+`). diff --git a/documentation/learningPath/egress.md b/documentation/learningPath/egress.md index c4c903576bb..7665157e861 100644 --- a/documentation/learningPath/egress.md +++ b/documentation/learningPath/egress.md @@ -23,11 +23,11 @@ graph LR class ide2 altColor ``` -1. [User initiates collection of artifact with a designated egress provider](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.WebApi/Operation/EgressOperation.cs#L45) -1. [Locate extension's executable and manifest](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Extensibility/ExtensionDiscoverer.cs#L28) -1. [Start extension and pass configuration/artifact via StdIn to the other process](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.cs#L104) -1. [Connect to egress provider using configuration and send artifact](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Extensions/AzureBlobStorage/AzureBlobEgressProvider.cs#L36) -1. [Provide success/failure information via StdOut to dotnet-monitor](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L77) +1. [User initiates collection of artifact with a designated egress provider](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.WebApi/Operation/EgressOperation.cs#L45) +1. [Locate extension's executable and manifest](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Extensibility/ExtensionDiscoverer.cs#L28) +1. [Start extension and pass configuration/artifact via StdIn to the other process](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.cs#L104) +1. [Connect to egress provider using configuration and send artifact](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Extensions/AzureBlobStorage/AzureBlobEgressProvider.cs#L36) +1. [Provide success/failure information via StdOut to dotnet-monitor](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L77) ## Distribution and Acquisition Model @@ -38,7 +38,7 @@ There are two versions of the `dotnet-monitor` image being offered: `monitor` an ### Well Known Egress Provider Locations -There are 3 [locations](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs#L291) that `dotnet-monitor` scans when looking for the extensions directory (the highest priority location is listed first): +There are 3 [locations](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/ServiceCollectionExtensions.cs#L291) that `dotnet-monitor` scans when looking for the extensions directory (the highest priority location is listed first): - Next to the executing `dotnet-monitor` assembly - SharedConfigDirectory - On Windows, `%ProgramData%\dotnet-monitor` @@ -56,23 +56,23 @@ The distribution/acquisition model for third-party egress providers is determine ### Extension Manifest -All extensions must include a manifest titled [`extension.json`](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Extensions/AzureBlobStorage/extension.json) that provides `dotnet-monitor` with some basic information about the extension. +All extensions must include a manifest titled [`extension.json`](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Extensions/AzureBlobStorage/extension.json) that provides `dotnet-monitor` with some basic information about the extension. | Name | Required | Type | Description | |---|---|---|---| | `Name` | true | string | The name of the extension (e.g. AzureBlobStorage) that users will use when writing configuration for the egress provider. | | `ExecutableFileName` | false | string | If specified, the executable file (without extension) to be launched when executing the extension; either `AssemblyFileName` or `ExecutableFileName` must be specified. | | `AssemblyFileName` | false | string | If specified, executes the extension using the shared .NET host (e.g. dotnet.exe) with the specified entry point assembly (without extension); either `AssemblyFileName` or `ExecutableFileName` must be specified. | -| `Modes` | false | [[ExtensionMode](../api/definitions.md#extensionmode)] | Additional modes the extension can be configured to run in (see an example of Validation [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L80)). | +| `Modes` | false | [[ExtensionMode](../api/definitions.md#extensionmode)] | Additional modes the extension can be configured to run in (see an example of Validation [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L80)). | ### Configuration Extensions are designed to receive all user configuration through `dotnet monitor` - the extension itself should not rely on any additional configuration sources. -In addition to the configuration provided specifically for your egress provider, `dotnet-monitor` also includes the values stored in [`Properties`](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Options/EgressOptions.cs#L21). Note that `Properties` may include information that is not relevant to the current egress provider, since it is a shared bucket between all configured egress providers. +In addition to the configuration provided specifically for your egress provider, `dotnet-monitor` also includes the values stored in [`Properties`](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Options/EgressOptions.cs#L21). Note that `Properties` may include information that is not relevant to the current egress provider, since it is a shared bucket between all configured egress providers. ### Communicating With Dotnet-Monitor -[`dotnet monitor` will pass serialized configuration via `StdIn` to the extension](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.cs#L184); an example of how the `AzureBlobStorage` egress provider interprets the egress payload can be found [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L139). **It's important to validate the version number at the beginning of the stream; if an extension does not have the same version as `dotnet-monitor`, it should not attempt to continue reading from the stream, and users may need to update to a newer version of the extension.** +[`dotnet monitor` will pass serialized configuration via `StdIn` to the extension](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.cs#L184); an example of how the `AzureBlobStorage` egress provider interprets the egress payload can be found [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L139). **It's important to validate the version number at the beginning of the stream; if an extension does not have the same version as `dotnet-monitor`, it should not attempt to continue reading from the stream, and users may need to update to a newer version of the extension.** -All output from the extension will be passed back to `dotnet-monitor`; this is logged [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.OutputParser.cs#L64). The contents of the `StandardOutput` and `StandardError` streams are handled and logged as seen [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.OutputParser.cs#L34), with the `StandardOutput` stream being logged at the `Info` level and the `StandardError` stream being logged at the `Warning` level. `Dotnet-Monitor` will continue reading output until it receives a [result](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tools/dotnet-monitor/Egress/Extension/EgressArtifactResult.cs) from the extension via the `StandardOutput` stream, at which point the extension's process will be terminated and `dotnet-monitor` will display the appropriate log message depending on the success/failure of the operation. Exceptions thrown during the egress operation are caught [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L71); this allows the extension to report a failure message back to `dotnet-monitor` that will be displayed to the user. +All output from the extension will be passed back to `dotnet-monitor`; this is logged [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.OutputParser.cs#L64). The contents of the `StandardOutput` and `StandardError` streams are handled and logged as seen [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Egress/Extension/EgressExtension.OutputParser.cs#L34), with the `StandardOutput` stream being logged at the `Info` level and the `StandardError` stream being logged at the `Warning` level. `Dotnet-Monitor` will continue reading output until it receives a [result](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tools/dotnet-monitor/Egress/Extension/EgressArtifactResult.cs) from the extension via the `StandardOutput` stream, at which point the extension's process will be terminated and `dotnet-monitor` will display the appropriate log message depending on the success/failure of the operation. Exceptions thrown during the egress operation are caught [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs#L71); this allows the extension to report a failure message back to `dotnet-monitor` that will be displayed to the user. diff --git a/documentation/learningPath/testing.md b/documentation/learningPath/testing.md index 45d49cf604c..6d180bc0702 100644 --- a/documentation/learningPath/testing.md +++ b/documentation/learningPath/testing.md @@ -4,81 +4,81 @@ Tests can be executed with the command line (via [build.cmd](../../Build.cmd) -test), as part of the PR build, or in Visual Studio. Note that because of limited resources in the build pool, tests ran from the command line or in the build pool are serialized. This avoids test failures associated with parallel testing. Visual Studio does not have such restrictions and is best used for individual tests and test investigations. When running from the command line, using the `-testgroup` parameter can be used to limit the amount of tests executed. For example `build.cmd -test -testgroup PR` will run the same tests as the PR build. -The framework of the test assemblies is controlled by [TestTargetFrameworks](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/eng/Versions.props). The test itself is attributed with a particular framework based on the [TargetFrameworkMonikerTraitAttribute](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/TargetFrameworkMonikerTraitAttribute.cs). +The framework of the test assemblies is controlled by [TestTargetFrameworks](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/eng/Versions.props). The test itself is attributed with a particular framework based on the [TargetFrameworkMonikerTraitAttribute](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/TargetFrameworkMonikerTraitAttribute.cs). ## Unit Tests -- [Microsoft.Diagnostics.Monitoring.Tool.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests) -- [Microsoft.Diagnostics.Monitoring.WebApi.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.WebApi.UnitTests/) -- [CollectionRuleActions.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/CollectionRuleActions.UnitTests/) +- [Microsoft.Diagnostics.Monitoring.Tool.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTests) +- [Microsoft.Diagnostics.Monitoring.WebApi.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.WebApi.UnitTests/) +- [CollectionRuleActions.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/CollectionRuleActions.UnitTests/) Unit test assemblies directly reference types from various dotnet-monitor assemblies. However, since most of dotnet-monitor heavily relies on code injection, there are utility classes to simplify unit test creation. -- [TestHostHelper](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/TestHostHelper.cs) can be used to setup a basic unit test scenario using dependency injection. -- [CollectionRuleOptionsExtensions](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/Options/CollectionRuleOptionsExtensions.cs) can be used to easily create collection rules from configuration. +- [TestHostHelper](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/TestHostHelper.cs) can be used to setup a basic unit test scenario using dependency injection. +- [CollectionRuleOptionsExtensions](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/Options/CollectionRuleOptionsExtensions.cs) can be used to easily create collection rules from configuration. ## Functional Tests -- [Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests) -- [Microsoft.Diagnostics.Monitoring.UnitTestApp](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/) +- [Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests) +- [Microsoft.Diagnostics.Monitoring.UnitTestApp](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/) Functional tests are composed of 3 main parts: 1. The test itself, which sets up and validates the results. 1. An instance of dotnet-monitor 1. An instance of an application that is being monitored (from the UnitTestApp assembly) -* [ScenarioRunner](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests/Runners/ScenarioRunner.cs) is typically used to orchestrate test runs. The class will spawn both an instance of dotnet-monitor and an instance of test application. The app and the test communicate via stdio. The test communicates with dotnet-monitor via its Api surface. -* The dotnet-monitor Api surface can be accessed through the [ApiClient](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests/HttpApi/ApiClient.cs). -* New scenarios can be added [here](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/Scenarios/). -* The [AsyncWaitScenario](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/Scenarios/AsyncWaitScenario.cs) is sufficient for most tests. -* Coordination of the scenario and the test is done via message passing (json over stdio) between the test and the app. To send messages to the app from the test, [AppRunner](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/Runners/AppRunner.cs)'s `SendCommandAsync` is used. In the scenario definition, [ScenarioHelpers](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/ScenarioHelpers.cs)'s `WaitForCommandAsync` is used. This can be used to synchronize various points of the test application with the execution of the dotnet-monitor Api from the test itself. +* [ScenarioRunner](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests/Runners/ScenarioRunner.cs) is typically used to orchestrate test runs. The class will spawn both an instance of dotnet-monitor and an instance of test application. The app and the test communicate via stdio. The test communicates with dotnet-monitor via its Api surface. +* The dotnet-monitor Api surface can be accessed through the [ApiClient](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.FunctionalTests/HttpApi/ApiClient.cs). +* New scenarios can be added [here](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/Scenarios/). +* The [AsyncWaitScenario](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/Scenarios/AsyncWaitScenario.cs) is sufficient for most tests. +* Coordination of the scenario and the test is done via message passing (json over stdio) between the test and the app. To send messages to the app from the test, [AppRunner](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/Runners/AppRunner.cs)'s `SendCommandAsync` is used. In the scenario definition, [ScenarioHelpers](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.UnitTestApp/ScenarioHelpers.cs)'s `WaitForCommandAsync` is used. This can be used to synchronize various points of the test application with the execution of the dotnet-monitor Api from the test itself. ## Native/Profiler Tests -- [Microsoft.Diagnostics.Monitoring.Profiler.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Profiler.UnitTests/) -- [Microsoft.Diagnostics.Monitoring.Profiler.UnitTestApp](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Profiler.UnitTestApp/) +- [Microsoft.Diagnostics.Monitoring.Profiler.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Profiler.UnitTests/) +- [Microsoft.Diagnostics.Monitoring.Profiler.UnitTestApp](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Profiler.UnitTestApp/) This test assembly provides a test to make sure the dotnet-monitor profiler can load into a target app. ## Schema Generation -- [Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests/) -- [Microsoft.Diagnostics.Monitoring.ConfigurationSchema](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema/) -- [Microsoft.Diagnostics.Monitoring.Options](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Microsoft.Diagnostics.Monitoring.Options) +- [Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema.UnitTests/) +- [Microsoft.Diagnostics.Monitoring.ConfigurationSchema](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema/) +- [Microsoft.Diagnostics.Monitoring.Options](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Microsoft.Diagnostics.Monitoring.Options) -Dotnet-monitor generates [schema.json](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/schema.json) using unit tests. If dotnet-monitor's configuration changes, the schema.json file needs to be updated. -Note that it is possible to compile option classes directly into the `ConfigurationSchema` project. This may be necessary in order to attribute properties appropriately for schema generation. See [Microsoft.Diagnostics.Monitoring.ConfigurationSchema.csproj](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema/Microsoft.Diagnostics.Monitoring.ConfigurationSchema.csproj). See the [Configuration](./configuration.md#how-configuration-works) learning path for more details. +Dotnet-monitor generates [schema.json](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/schema.json) using unit tests. If dotnet-monitor's configuration changes, the schema.json file needs to be updated. +Note that it is possible to compile option classes directly into the `ConfigurationSchema` project. This may be necessary in order to attribute properties appropriately for schema generation. See [Microsoft.Diagnostics.Monitoring.ConfigurationSchema.csproj](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.ConfigurationSchema/Microsoft.Diagnostics.Monitoring.ConfigurationSchema.csproj). See the [Configuration](./configuration.md#how-configuration-works) learning path for more details. ## OpenAPI generation -- [Microsoft.Diagnostics.Monitoring.OpenApiGen.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.OpenApiGen.UnitTests/) -- [Microsoft.Diagnostics.Monitoring.OpenApiGen](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.OpenApiGen/) +- [Microsoft.Diagnostics.Monitoring.OpenApiGen.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.OpenApiGen.UnitTests/) +- [Microsoft.Diagnostics.Monitoring.OpenApiGen](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.OpenApiGen/) -These assemblies and tests are used to generate the [OpenAPI spec](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/documentation/openapi.json) for the dotnet-monitor API. Changes to the dotnet-monitor api surface require updating `openapi.json`. +These assemblies and tests are used to generate the [OpenAPI spec](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/documentation/openapi.json) for the dotnet-monitor API. Changes to the dotnet-monitor api surface require updating `openapi.json`. If using VSCode or Codespaces, you can also use the `Regenerate openapi.json` task. ## Startup hooks / hosting startup -- [Microsoft.Diagnostics.Monitoring.Tool.TestStartupHook](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.TestStartupHook/) +- [Microsoft.Diagnostics.Monitoring.Tool.TestStartupHook](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.TestStartupHook/) This assembly is injected into a dotnet-monitor runner (using `DOTNET_STARTUP_HOOKS`) to facilitate Assembly resolution during test runs. -- [Microsoft.Diagnostics.Monitoring.Tool.TestHostingStartup](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.TestHostingStartup/) +- [Microsoft.Diagnostics.Monitoring.Tool.TestHostingStartup](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.TestHostingStartup/) Uses `ASPNETCORE_HOSTINGSTARTUPASSEMBLIES` to inject a service into dotnet-monitor during test time. This allows tests to locate files that are not normally part of the test deployment, such as the native profiler. -- [Microsoft.Diagnostics.Monitoring.StartupHook.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.StartupHook.UnitTests/) +- [Microsoft.Diagnostics.Monitoring.StartupHook.UnitTests](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.StartupHook.UnitTests/) Unit tests around features that are injected via `DOTNET_STARTUP_HOOKS` into the target application. This currently includes the Exceptions History feature. ## Misc test assemblies -- [Microsoft.Diagnostics.Monitoring.TestCommon](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/) +- [Microsoft.Diagnostics.Monitoring.TestCommon](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.TestCommon/) Utility classes that are shared between Unit Tests and Functional Tests. -- [Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon](https://github.com/dotnet/dotnet-monitor/blob/718d214708c2cbe7bc70fc7cbf2694c11b43a9e9/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/) +- [Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon](https://github.com/dotnet/dotnet-monitor/blob/de9b2ea7b9423029f655819447ff9a5c7e4e7f96/src/Tests/Microsoft.Diagnostics.Monitoring.Tool.UnitTestCommon/) Utility classes shared between unit test assemblies. From e50239db419b65b5e0ece1029d410e9997d87061 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Nov 2025 14:12:35 -0800 Subject: [PATCH 07/34] [main] Bump NJsonSchema from 11.0.0 to 11.5.1 (#8702) --- updated-dependencies: - dependency-name: NJsonSchema dependency-version: 11.5.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/independent/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/independent/Versions.props b/eng/dependabot/independent/Versions.props index 8e6a36da093..978ecc9a3d3 100644 --- a/eng/dependabot/independent/Versions.props +++ b/eng/dependabot/independent/Versions.props @@ -13,7 +13,7 @@ 13.0.4 - 11.0.0 + 11.5.1 4.0.0.3 4.0.0.2 From 2cde84a2e1ca07605dd5a3b9eeda18eecc34bd9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:35:55 -0800 Subject: [PATCH 08/34] generate release notes (#8714) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- documentation/releaseNotes/releaseNotes.v8.1.3.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 documentation/releaseNotes/releaseNotes.v8.1.3.md diff --git a/documentation/releaseNotes/releaseNotes.v8.1.3.md b/documentation/releaseNotes/releaseNotes.v8.1.3.md new file mode 100644 index 00000000000..2796d6a73b7 --- /dev/null +++ b/documentation/releaseNotes/releaseNotes.v8.1.3.md @@ -0,0 +1,7 @@ +Today we are releasing the 8.1.3 build of the `dotnet monitor` tool. This release includes: + +- Updated dependencies + + + +If you would like to provide additional feedback to the team [please fill out this survey](https://aka.ms/dotnet-monitor-survey?src=rn). \ No newline at end of file From 0c019a302e797d3ed61c822e472bad5da3f4ba96 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Nov 2025 10:36:18 -0800 Subject: [PATCH 09/34] generate release notes (#8715) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- documentation/releaseNotes/releaseNotes.v9.0.5.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 documentation/releaseNotes/releaseNotes.v9.0.5.md diff --git a/documentation/releaseNotes/releaseNotes.v9.0.5.md b/documentation/releaseNotes/releaseNotes.v9.0.5.md new file mode 100644 index 00000000000..5d3beea0e4f --- /dev/null +++ b/documentation/releaseNotes/releaseNotes.v9.0.5.md @@ -0,0 +1,7 @@ +Today we are releasing the 9.0.5 build of the `dotnet monitor` tool. This release includes: + +- Updated dependencies + + + +If you would like to provide additional feedback to the team [please fill out this survey](https://aka.ms/dotnet-monitor-survey?src=rn). \ No newline at end of file From 04033459429df6af8fcacbf116c8fa369cfaad4f Mon Sep 17 00:00:00 2001 From: Wiktor Kopec Date: Mon, 10 Nov 2025 10:41:14 -0800 Subject: [PATCH 10/34] Revert "Use dotnet-monitor asset instead of merge manfest for versioning (#8563) (#8575)" (#8719) This reverts commit 3f3601df66cd5c32cd20b650017baacd1d358162. --- eng/pipelines/dotnet-monitor-release.yml | 2 +- eng/release/Scripts/GetBuildVersion.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/dotnet-monitor-release.yml b/eng/pipelines/dotnet-monitor-release.yml index ebd357ad7fe..f2fa8271370 100644 --- a/eng/pipelines/dotnet-monitor-release.yml +++ b/eng/pipelines/dotnet-monitor-release.yml @@ -141,7 +141,7 @@ variables: $buildData = $buildInfo | ConvertFrom-Json - [array]$matchingData = $buildData.assets | Where-Object { $_.name -eq 'dotnet-monitor' } + [array]$matchingData = $buildData.assets | Where-Object { $_.name -match 'MergedManifest.xml$' -and $_.nonShipping } if (!$matchingData -or $matchingData.Length -ne 1) { Write-Error 'Unable to obtain build version.' diff --git a/eng/release/Scripts/GetBuildVersion.ps1 b/eng/release/Scripts/GetBuildVersion.ps1 index b94bd6afa2c..832fc54098b 100644 --- a/eng/release/Scripts/GetBuildVersion.ps1 +++ b/eng/release/Scripts/GetBuildVersion.ps1 @@ -15,7 +15,7 @@ $buildData = & $PSScriptRoot\GetDarcBuild.ps1 ` -MaestroApiEndPoint $MaestroApiEndPoint ` -DarcVersion $DarcVersion -[array]$matchingData = $buildData.assets | Where-Object { $_.name -eq 'dotnet-monitor' } +[array]$matchingData = $buildData.assets | Where-Object { $_.name -match 'MergedManifest.xml$' -and $_.nonShipping } if (!$matchingData -or $matchingData.Length -ne 1) { Write-Error 'Unable to obtain build version.' From 74107283e2ff926504afdb5108aefff183c5a88a Mon Sep 17 00:00:00 2001 From: Wiktor Kopec Date: Tue, 11 Nov 2025 09:33:10 -0800 Subject: [PATCH 11/34] Reapply "Use dotnet-monitor asset instead of merge manfest for versioning (#8563) (#8575)" (#8719) (#8727) This reverts commit 04033459429df6af8fcacbf116c8fa369cfaad4f. --- eng/pipelines/dotnet-monitor-release.yml | 2 +- eng/release/Scripts/GetBuildVersion.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/pipelines/dotnet-monitor-release.yml b/eng/pipelines/dotnet-monitor-release.yml index f2fa8271370..ebd357ad7fe 100644 --- a/eng/pipelines/dotnet-monitor-release.yml +++ b/eng/pipelines/dotnet-monitor-release.yml @@ -141,7 +141,7 @@ variables: $buildData = $buildInfo | ConvertFrom-Json - [array]$matchingData = $buildData.assets | Where-Object { $_.name -match 'MergedManifest.xml$' -and $_.nonShipping } + [array]$matchingData = $buildData.assets | Where-Object { $_.name -eq 'dotnet-monitor' } if (!$matchingData -or $matchingData.Length -ne 1) { Write-Error 'Unable to obtain build version.' diff --git a/eng/release/Scripts/GetBuildVersion.ps1 b/eng/release/Scripts/GetBuildVersion.ps1 index 832fc54098b..b94bd6afa2c 100644 --- a/eng/release/Scripts/GetBuildVersion.ps1 +++ b/eng/release/Scripts/GetBuildVersion.ps1 @@ -15,7 +15,7 @@ $buildData = & $PSScriptRoot\GetDarcBuild.ps1 ` -MaestroApiEndPoint $MaestroApiEndPoint ` -DarcVersion $DarcVersion -[array]$matchingData = $buildData.assets | Where-Object { $_.name -match 'MergedManifest.xml$' -and $_.nonShipping } +[array]$matchingData = $buildData.assets | Where-Object { $_.name -eq 'dotnet-monitor' } if (!$matchingData -or $matchingData.Length -ne 1) { Write-Error 'Unable to obtain build version.' From 0bdc2a92da9c0d0b9be5b79fb612da549435363c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Nov 2025 09:39:55 -0800 Subject: [PATCH 12/34] generate release notes (#8728) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- documentation/releaseNotes/releaseNotes.v10.0.0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 documentation/releaseNotes/releaseNotes.v10.0.0.md diff --git a/documentation/releaseNotes/releaseNotes.v10.0.0.md b/documentation/releaseNotes/releaseNotes.v10.0.0.md new file mode 100644 index 00000000000..f9731c73bbc --- /dev/null +++ b/documentation/releaseNotes/releaseNotes.v10.0.0.md @@ -0,0 +1,7 @@ +Today we are releasing the 10.0.0 build of the `dotnet monitor` tool. This release includes: + +- Updated dependencies + + + +If you would like to provide additional feedback to the team [please fill out this survey](https://aka.ms/dotnet-monitor-survey?src=rn). \ No newline at end of file From 0f2ef0e10c5833a8cd86e75f91061ad0cba92c90 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:34:35 -0800 Subject: [PATCH 13/34] Register v9.0.5 release information (#8730) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/releases.json | 4 ++-- documentation/releases.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/releases.json b/.github/releases.json index 1682dfc0f6b..cfd3bb309d7 100644 --- a/.github/releases.json +++ b/.github/releases.json @@ -36,9 +36,9 @@ "outOfSupportDate": "2025-05-11T00:00:00.000Z" }, "9.0": { - "tag": "v9.0.4", + "tag": "v9.0.5", "minorReleaseDate": "2024-11-12T00:00:00.000Z", - "patchReleaseDate": "2025-08-06T00:00:00.000Z", + "patchReleaseDate": "2025-11-11T00:00:00.000Z", "supportedFrameworks": [ "net9.0" ] diff --git a/documentation/releases.md b/documentation/releases.md index a2ad41c9a8b..eb49a32398c 100644 --- a/documentation/releases.md +++ b/documentation/releases.md @@ -4,7 +4,7 @@ | Version | Original Release Date | Latest Patch Version | Patch Release Date | End of Support | Runtime Frameworks | | --- | --- | --- | --- | --- | --- | -| 9.0 | November 12, 2024 | [9.0.4](https://github.com/dotnet/dotnet-monitor/releases/tag/v9.0.4) | August 6, 2025 | | net9.0 | +| 9.0 | November 12, 2024 | [9.0.5](https://github.com/dotnet/dotnet-monitor/releases/tag/v9.0.5) | November 11, 2025 | | net9.0 | | 8.1 | February 11, 2025 | [8.1.2](https://github.com/dotnet/dotnet-monitor/releases/tag/v8.1.2) | August 6, 2025 | | net8.0 | From 633770b67bf7852665bb367da9d61e791d5611dc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Nov 2025 09:30:18 -0800 Subject: [PATCH 14/34] Register v10.0.0 release information (#8731) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/releases.json | 21 +++++---------------- documentation/releases.md | 3 +-- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/.github/releases.json b/.github/releases.json index cfd3bb309d7..7904d7a7fb4 100644 --- a/.github/releases.json +++ b/.github/releases.json @@ -4,28 +4,17 @@ "cleanupUnsupportedReleasesAfterMonths": 12 }, "preview": [ - "10.0", "9.1" ], "supported": [ + "10.0", "9.0", "8.1" ], "unsupported": [ - "8.0", - "6.3" + "8.0" ], "releases": { - "6.3": { - "tag": "v6.3.10", - "minorReleaseDate": "2022-10-11T00:00:00.000Z", - "patchReleaseDate": "2024-11-12T00:00:00.000Z", - "supportedFrameworks": [ - "net6.0", - "netcoreapp3.1" - ], - "outOfSupportDate": "2024-11-12T00:00:00.000Z" - }, "8.0": { "tag": "v8.0.8", "minorReleaseDate": "2023-11-14T00:00:00.000Z", @@ -60,9 +49,9 @@ ] }, "10.0": { - "tag": "v10.0.0-rc.2.25503.6", - "minorReleaseDate": "2025-10-14T00:00:00.000Z", - "patchReleaseDate": "2025-10-14T00:00:00.000Z", + "tag": "v10.0.0", + "minorReleaseDate": "2025-11-12T00:00:00.000Z", + "patchReleaseDate": "2025-11-12T00:00:00.000Z", "supportedFrameworks": [ "net10.0" ] diff --git a/documentation/releases.md b/documentation/releases.md index eb49a32398c..7483e85403e 100644 --- a/documentation/releases.md +++ b/documentation/releases.md @@ -4,6 +4,7 @@ | Version | Original Release Date | Latest Patch Version | Patch Release Date | End of Support | Runtime Frameworks | | --- | --- | --- | --- | --- | --- | +| 10.0 | November 12, 2025 | [10.0.0](https://github.com/dotnet/dotnet-monitor/releases/tag/v10.0.0) | November 12, 2025 | | net10.0 | | 9.0 | November 12, 2024 | [9.0.5](https://github.com/dotnet/dotnet-monitor/releases/tag/v9.0.5) | November 11, 2025 | | net9.0 | | 8.1 | February 11, 2025 | [8.1.2](https://github.com/dotnet/dotnet-monitor/releases/tag/v8.1.2) | August 6, 2025 | | net8.0 | @@ -13,14 +14,12 @@ | Version | Original Release Date | Latest Patch Version | Patch Release Date | End of Support | Runtime Frameworks | | --- | --- | --- | --- | --- | --- | | 8.0 | November 14, 2023 | [8.0.8](https://github.com/dotnet/dotnet-monitor/releases/tag/v8.0.8) | February 11, 2025 | May 11, 2025 | net8.0 | -| 6.3 | October 11, 2022 | [6.3.10](https://github.com/dotnet/dotnet-monitor/releases/tag/v6.3.10) | November 12, 2024 | November 12, 2024 | net6.0
netcoreapp3.1 | ## Preview versions | Version | Release Date | Latest Version | Runtime Frameworks | | --- | --- | --- | --- | -| 10.0 | October 14, 2025 | [10.0.0 rc 2](https://github.com/dotnet/dotnet-monitor/releases/tag/v10.0.0-rc.2.25503.6) | net10.0 | | 9.1 | May 13, 2025 | [9.1.0 preview 3](https://github.com/dotnet/dotnet-monitor/releases/tag/v9.1.0-preview.3.25257.5) | net9.0 | From 3b8c2866108ddf642b0bd9d79acd0427d93a7d27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Nov 2025 09:31:36 -0800 Subject: [PATCH 15/34] [main] Bump the runtime-dependencies group with 5 updates (#8725) Bumps Microsoft.Extensions.Configuration.Abstractions from 9.0.10 to 9.0.11 Bumps Microsoft.Extensions.Logging from 9.0.10 to 9.0.11 Bumps Microsoft.Extensions.Logging.Abstractions from 9.0.10 to 9.0.11 Bumps Microsoft.Extensions.Logging.Console from 9.0.10 to 9.0.11 Bumps System.Text.Json from 9.0.10 to 9.0.11 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Configuration.Abstractions dependency-version: 9.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: runtime-dependencies - dependency-name: Microsoft.Extensions.Logging dependency-version: 9.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: runtime-dependencies - dependency-name: Microsoft.Extensions.Logging.Abstractions dependency-version: 9.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: runtime-dependencies - dependency-name: Microsoft.Extensions.Logging.Console dependency-version: 9.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: runtime-dependencies - dependency-name: System.Text.Json dependency-version: 9.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: runtime-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/net9.0/Versions.props | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/dependabot/net9.0/Versions.props b/eng/dependabot/net9.0/Versions.props index 0ef1906cfdd..5b26fab2f9d 100644 --- a/eng/dependabot/net9.0/Versions.props +++ b/eng/dependabot/net9.0/Versions.props @@ -2,16 +2,16 @@ - 9.0.10 + 9.0.11 - 9.0.10 + 9.0.11 - 9.0.10 + 9.0.11 - 9.0.10 + 9.0.11 9.0.10 - 9.0.10 + 9.0.11 From 0e4a52e7863c39558fd101fc96843aeb955f1012 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:39:51 -0800 Subject: [PATCH 16/34] [main] Update dependencies from dotnet/diagnostics (#8570) * Update dependencies from https://github.com/dotnet/diagnostics build 20250829.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25429.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250830.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25430.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250831.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25431.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250901.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25451.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250902.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25452.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250903.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25453.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250906.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25456.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250909.1 Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe , Microsoft.FileFormats From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25459.1 * Update dependencies from https://github.com/dotnet/diagnostics build 20250915.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25465.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.646501 * Update dependencies from https://github.com/dotnet/diagnostics build 20250919.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25469.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.646901 * Update dependencies from https://github.com/dotnet/diagnostics build 20250923.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25473.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.647301 * Update dependencies from https://github.com/dotnet/diagnostics build 20250924.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25474.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.647401 * Update dependencies from https://github.com/dotnet/diagnostics build 20250925.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25475.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.647501 * Update dependencies from https://github.com/dotnet/diagnostics build 20250927.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25477.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.647701 * Update dependencies from https://github.com/dotnet/diagnostics build 20250928.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25478.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.647801 * Update dependencies from https://github.com/dotnet/diagnostics build 20250929.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25479.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.647901 * Update dependencies from https://github.com/dotnet/diagnostics build 20250930.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25480.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.648001 * Update dependencies from https://github.com/dotnet/diagnostics build 20251002.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25502.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.650201 * Update dependencies from https://github.com/dotnet/diagnostics build 20251003.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25503.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.650301 * Update dependencies from https://github.com/dotnet/diagnostics build 20251004.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25504.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.650401 * Update dependencies from https://github.com/dotnet/diagnostics build 20251006.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25506.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.650601 * Update dependencies from https://github.com/dotnet/diagnostics build 20251007.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25507.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.650701 * Update dependencies from https://github.com/dotnet/diagnostics build 20251011.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25511.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.651101 * Update dependencies from https://github.com/dotnet/diagnostics build 20251012.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25512.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.651201 * Update dependencies from https://github.com/dotnet/diagnostics build 20251015.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25515.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.651501 * Update dependencies from https://github.com/dotnet/diagnostics build 20251016.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25516.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.651601 * Update dependencies from https://github.com/dotnet/diagnostics build 20251017.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25517.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.651701 * Update dependencies from https://github.com/dotnet/diagnostics build 20251018.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25518.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.651801 * Update dependencies from https://github.com/dotnet/diagnostics build 20251019.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25519.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.651901 * Update dependencies from https://github.com/dotnet/diagnostics build 20251021.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25521.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.652101 * Update dependencies from https://github.com/dotnet/diagnostics build 20251022.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25522.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.652201 * Update dependencies from https://github.com/dotnet/diagnostics build 20251023.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25523.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.652301 * Update dependencies from https://github.com/dotnet/diagnostics build 20251026.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25526.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.652601 * Update dependencies from https://github.com/dotnet/diagnostics build 20251027.2 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25527.2 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.652702 * Update dependencies from https://github.com/dotnet/diagnostics build 20251030.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25530.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.653001 * Update dependencies from https://github.com/dotnet/diagnostics build 20251031.2 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25531.2 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.653102 * Update dependencies from https://github.com/dotnet/diagnostics build 20251101.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25551.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.655101 * Update dependencies from https://github.com/dotnet/diagnostics build 20251102.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25552.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.655201 * Update dependencies from https://github.com/dotnet/diagnostics build 20251103.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25553.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.655301 * Update dependencies from https://github.com/dotnet/diagnostics build 20251104.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25554.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.655401 * Update dependencies from https://github.com/dotnet/diagnostics build 20251106.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25556.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.655601 * Update dependencies from https://github.com/dotnet/diagnostics build 20251108.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25558.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.655801 * Update dependencies from https://github.com/dotnet/diagnostics build 20251109.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25559.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.655901 * Update dependencies from https://github.com/dotnet/diagnostics build 20251111.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25412.1 -> To Version 9.0.0-preview.25561.1 Microsoft.FileFormats From Version 1.0.641201 -> To Version 1.0.656101 --------- Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index cc27ee5f31a..fe8838e51e4 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -4,13 +4,13 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 4442a188f9200a57635373dcd640893c0e8dcc78 - + https://github.com/dotnet/diagnostics - a321e262b120841f4bd7651da46826589404ac66 + ea6796b6d0556f8ab3c01d0c0d8f234fdfdf1d73 - + https://github.com/dotnet/diagnostics - a321e262b120841f4bd7651da46826589404ac66 + ea6796b6d0556f8ab3c01d0c0d8f234fdfdf1d73 https://github.com/dotnet/command-line-api @@ -42,9 +42,9 @@ https://github.com/dotnet/arcade 6666973b629b24e259162dba03486c23af464bab - + https://github.com/dotnet/diagnostics - a321e262b120841f4bd7651da46826589404ac66 + ea6796b6d0556f8ab3c01d0c0d8f234fdfdf1d73 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 35ca90a2b67..83bbc67a7e2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -57,8 +57,8 @@ 2.0.0-rc.1.25408.2 - 9.0.0-preview.25412.1 - 9.0.0-preview.25412.1 + 9.0.0-preview.25561.1 + 9.0.0-preview.25561.1 9.0.0-preview.25076.3 @@ -67,7 +67,7 @@ 9.0.200-rtm.25073.13 - 1.0.641201 + 1.0.656101 $(MicrosoftNETCoreApp80Version) From 96eb9dee6b5e38944664b8a037be442ce8decfe9 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:40:27 -0800 Subject: [PATCH 17/34] [main] Update dependencies from dotnet/arcade (#8708) * Update dependencies from https://github.com/dotnet/arcade build 20251105.4 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.25515.2 -> To Version 9.0.0-beta.25555.4 * Update dependencies from https://github.com/dotnet/arcade build 20251111.1 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.25515.2 -> To Version 9.0.0-beta.25561.1 * Update dependencies from https://github.com/dotnet/arcade build 20251112.4 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.25515.2 -> To Version 9.0.0-beta.25562.4 --------- Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 20 +++++++++---------- eng/Versions.props | 6 +++--- .../job/publish-build-assets.yml | 5 +++++ .../core-templates/post-build/post-build.yml | 5 +++++ eng/common/cross/x64/tizen/tizen.patch | 9 +++++++++ global.json | 6 +++--- 6 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 eng/common/cross/x64/tizen/tizen.patch diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index fe8838e51e4..a6b6dc2823b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -22,25 +22,25 @@ https://github.com/dotnet/roslyn-analyzers 16865ea61910500f1022ad2b96c499e5df02c228 - + https://github.com/dotnet/arcade - 6666973b629b24e259162dba03486c23af464bab + 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 - + https://github.com/dotnet/arcade - 6666973b629b24e259162dba03486c23af464bab + 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 - + https://github.com/dotnet/arcade - 6666973b629b24e259162dba03486c23af464bab + 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 - + https://github.com/dotnet/arcade - 6666973b629b24e259162dba03486c23af464bab + 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 - + https://github.com/dotnet/arcade - 6666973b629b24e259162dba03486c23af464bab + 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 https://github.com/dotnet/diagnostics diff --git a/eng/Versions.props b/eng/Versions.props index 83bbc67a7e2..f9bec84710e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -48,9 +48,9 @@ --> - 9.0.0-beta.25515.2 - 9.0.0-beta.25515.2 - 9.0.0-beta.25515.2 + 9.0.0-beta.25562.4 + 9.0.0-beta.25562.4 + 9.0.0-beta.25562.4 9.0.1 9.0.1-rtm.24610.9 diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index a58c8a418e8..6b5ff28cc70 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -145,6 +145,11 @@ jobs: PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} + # Darc is targeting 8.0, so make sure it's installed + - task: UseDotNet@2 + inputs: + version: 8.0.x + - task: AzureCLI@2 displayName: Publish Using Darc inputs: diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 2ee8bbfff54..221d1ac6de1 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -305,6 +305,11 @@ stages: - task: NuGetAuthenticate@1 + # Darc is targeting 8.0, so make sure it's installed + - task: UseDotNet@2 + inputs: + version: 8.0.x + - task: AzureCLI@2 displayName: Publish Using Darc inputs: diff --git a/eng/common/cross/x64/tizen/tizen.patch b/eng/common/cross/x64/tizen/tizen.patch new file mode 100644 index 00000000000..56fbc881095 --- /dev/null +++ b/eng/common/cross/x64/tizen/tizen.patch @@ -0,0 +1,9 @@ +diff -u -r a/usr/lib64/libc.so b/usr/lib64/libc.so +--- a/usr/lib64/libc.so 2016-12-30 23:00:08.284951863 +0900 ++++ b/usr/lib64/libc.so 2016-12-30 23:00:32.140951815 +0900 +@@ -2,4 +2,4 @@ + Use the shared library, but some functions are only in + the static library, so try that secondarily. */ + OUTPUT_FORMAT(elf64-x86-64) +-GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) ) ++GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-x86-64.so.2 ) ) diff --git a/global.json b/global.json index c217069dcf6..de7d7e59a00 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "tools": { - "dotnet": "9.0.111", + "dotnet": "9.0.112", "runtimes": { "aspnetcore": [ "$(MicrosoftAspNetCoreApp80Version)", @@ -22,7 +22,7 @@ }, "msbuild-sdks": { "Microsoft.Build.NoTargets": "3.7.0", - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25515.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25515.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25562.4", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25562.4" } } From 1626a814cbf4d14b3372a3931f4f86d06fc07b16 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:40:52 -0800 Subject: [PATCH 18/34] [main] Bump Microsoft.Diagnostics.DbgShim from 9.0.621003 to 9.0.652701 (#8690) --- updated-dependencies: - dependency-name: Microsoft.Diagnostics.DbgShim dependency-version: 9.0.652701 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/nuget.org/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/nuget.org/Versions.props b/eng/dependabot/nuget.org/Versions.props index c697645b9c1..5f04caf2927 100644 --- a/eng/dependabot/nuget.org/Versions.props +++ b/eng/dependabot/nuget.org/Versions.props @@ -2,6 +2,6 @@ - 9.0.621003 + 9.0.652701 From 17bd4548f5f8e53cadb6ccc073eda64ea979a327 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:42:14 -0800 Subject: [PATCH 19/34] [main] Bump the runtime-dependencies group with 1 update (#8720) Bumps Microsoft.NETCore.DotNetHost from 8.0.21 to 8.0.22 --- updated-dependencies: - dependency-name: Microsoft.NETCore.DotNetHost dependency-version: 8.0.22 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: runtime-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/net8.0/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/net8.0/Versions.props b/eng/dependabot/net8.0/Versions.props index aa86fc2c62f..8c241ec201f 100644 --- a/eng/dependabot/net8.0/Versions.props +++ b/eng/dependabot/net8.0/Versions.props @@ -10,7 +10,7 @@ 8.0.1 - 8.0.21 + 8.0.22 8.0.6 From 9e126ba407737a3b5dc423e390694a242d07bf1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 11:45:51 -0800 Subject: [PATCH 20/34] [main] Bump the azure-sdk-dependencies group with 1 update (#8711) Bumps Azure.Core from 1.49.0 to 1.50.0 --- updated-dependencies: - dependency-name: Azure.Core dependency-version: 1.50.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: azure-sdk-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/independent/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/independent/Versions.props b/eng/dependabot/independent/Versions.props index 978ecc9a3d3..f53ff8cde3b 100644 --- a/eng/dependabot/independent/Versions.props +++ b/eng/dependabot/independent/Versions.props @@ -2,7 +2,7 @@ - 1.49.0 + 1.50.0 1.17.0 12.26.0 12.24.0 From 7e4768b16eba820e9bac777777feb95331a1afab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 16:23:35 -0800 Subject: [PATCH 21/34] Bump actions/checkout from 5.0.0 to 5.0.1 (#8737) Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v5...v5.0.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check-learning-path-links.yml | 4 ++-- .github/workflows/check-markdown-links.yml | 2 +- .github/workflows/cleanup-releases.yml | 2 +- .github/workflows/generate-release-notes.yml | 4 ++-- .github/workflows/post-release.yml | 6 +++--- .github/workflows/spellcheck.yml | 2 +- .github/workflows/submit-to-do-issue.yml | 2 +- .github/workflows/sync-branches.yml | 4 ++-- .github/workflows/update-release-version.yml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/check-learning-path-links.yml b/.github/workflows/check-learning-path-links.yml index c2a427fd77f..475aeb27296 100644 --- a/.github/workflows/check-learning-path-links.yml +++ b/.github/workflows/check-learning-path-links.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout head - uses: actions/checkout@v5 + uses: actions/checkout@v5.0.1 with: persist-credentials: true # need this for opening a PR fetch-depth: 0 @@ -30,7 +30,7 @@ jobs: echo "prev_sha=$prev_sha" >> $GITHUB_ENV - name: Checkout previous update - uses: actions/checkout@v5 + uses: actions/checkout@v5.0.1 with: persist-credentials: false ref: ${{ env.prev_sha }} diff --git a/.github/workflows/check-markdown-links.yml b/.github/workflows/check-markdown-links.yml index b0843e38754..d33fb923da3 100644 --- a/.github/workflows/check-markdown-links.yml +++ b/.github/workflows/check-markdown-links.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: false diff --git a/.github/workflows/cleanup-releases.yml b/.github/workflows/cleanup-releases.yml index cb12d9f84d7..e0eadf87443 100644 --- a/.github/workflows/cleanup-releases.yml +++ b/.github/workflows/cleanup-releases.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: true # We need to persist credentials inorder to open a PR. diff --git a/.github/workflows/generate-release-notes.yml b/.github/workflows/generate-release-notes.yml index 3879ab2b54b..74f91bb346d 100644 --- a/.github/workflows/generate-release-notes.yml +++ b/.github/workflows/generate-release-notes.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout release branch - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: false fetch-depth: 0 # Fetch the entire repo for the below git commit graph operations @@ -65,7 +65,7 @@ jobs: BASELINE_TAG: ${{ inputs.baselineTag }} - name: Checkout main - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: true # We need to persist credentials to push the resulting changes upstream. ref: main diff --git a/.github/workflows/post-release.yml b/.github/workflows/post-release.yml index f2dac3baf1b..bff45509afe 100644 --- a/.github/workflows/post-release.yml +++ b/.github/workflows/post-release.yml @@ -29,7 +29,7 @@ jobs: # It's simpler than trying to parse our `eng/Versions.prop` due to the conditionals in it. steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: false @@ -52,7 +52,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: false @@ -104,7 +104,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: true # We need to persist credentials inorder to open a PR. ref: bot/${{ env.TARGET_BRANCH_POSTFIX }} diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index e8b21a4ff78..748dfeec027 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: false diff --git a/.github/workflows/submit-to-do-issue.yml b/.github/workflows/submit-to-do-issue.yml index fdf3cb29773..d9924076aea 100644 --- a/.github/workflows/submit-to-do-issue.yml +++ b/.github/workflows/submit-to-do-issue.yml @@ -27,7 +27,7 @@ jobs: }); - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: false diff --git a/.github/workflows/sync-branches.yml b/.github/workflows/sync-branches.yml index 5d2bd5cea30..a08ea32bd73 100644 --- a/.github/workflows/sync-branches.yml +++ b/.github/workflows/sync-branches.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: true # We need to persist credentials to push the resulting changes upstream. fetch-depth: 0 # Fetch the entire repo for the below git operations @@ -64,7 +64,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: true # We need to persist credentials to push the resulting changes upstream. fetch-depth: 0 # Fetch the entire repo for the below git operations diff --git a/.github/workflows/update-release-version.yml b/.github/workflows/update-release-version.yml index 5a24e677d99..940f07eb2ec 100644 --- a/.github/workflows/update-release-version.yml +++ b/.github/workflows/update-release-version.yml @@ -31,7 +31,7 @@ jobs: steps: - name: Checkout branch - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: persist-credentials: true # We need to persist credentials to push the resulting changes upstream. From aee359932c1b350efc9d5a3ba4ab2d5451675d85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 16:24:27 -0800 Subject: [PATCH 22/34] [main] Bump Microsoft.NETCore.DotNetAppHost from 9.0.10 to 9.0.11 (#8726) --- updated-dependencies: - dependency-name: Microsoft.NETCore.DotNetAppHost dependency-version: 9.0.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/net9.0/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/net9.0/Versions.props b/eng/dependabot/net9.0/Versions.props index 5b26fab2f9d..5c5e64509c5 100644 --- a/eng/dependabot/net9.0/Versions.props +++ b/eng/dependabot/net9.0/Versions.props @@ -10,7 +10,7 @@ 9.0.11 - 9.0.10 + 9.0.11 9.0.11 From 839a2525b02aec34b129b396f497b32afde65e78 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Mon, 24 Nov 2025 14:38:16 -0800 Subject: [PATCH 23/34] Disable AzDO dependabot (#8734) * Add .azuredevops/dependabot.yml * Add .azuredevops/dependabot.yml --- .azuredevops/dependabot.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .azuredevops/dependabot.yml diff --git a/.azuredevops/dependabot.yml b/.azuredevops/dependabot.yml new file mode 100644 index 00000000000..f18e60565a4 --- /dev/null +++ b/.azuredevops/dependabot.yml @@ -0,0 +1,5 @@ +version: 2 + +# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github. +enable-campaigned-updates: false +enable-security-updates: false From 64bf646af20b491e5d0f4025cfab4096dda53ba7 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 01:07:15 +0000 Subject: [PATCH 24/34] Update dependencies from https://github.com/dotnet/arcade build 20251127.5 (#8756) [main] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 20 +++++++++---------- eng/Versions.props | 6 +++--- .../core-templates/job/source-build.yml | 2 +- .../core-templates/steps/source-build.yml | 2 +- global.json | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a6b6dc2823b..d5ac1ede7bb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -22,25 +22,25 @@ https://github.com/dotnet/roslyn-analyzers 16865ea61910500f1022ad2b96c499e5df02c228 - + https://github.com/dotnet/arcade - 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 + 0890ca08513391dafe556fb326c73c6c5c6cb329 - + https://github.com/dotnet/arcade - 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 + 0890ca08513391dafe556fb326c73c6c5c6cb329 - + https://github.com/dotnet/arcade - 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 + 0890ca08513391dafe556fb326c73c6c5c6cb329 - + https://github.com/dotnet/arcade - 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 + 0890ca08513391dafe556fb326c73c6c5c6cb329 - + https://github.com/dotnet/arcade - 6e2d8e204cebac7d3989c1996f96e5a9ed63fa80 + 0890ca08513391dafe556fb326c73c6c5c6cb329 https://github.com/dotnet/diagnostics diff --git a/eng/Versions.props b/eng/Versions.props index f9bec84710e..af13594a692 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -48,9 +48,9 @@ --> - 9.0.0-beta.25562.4 - 9.0.0-beta.25562.4 - 9.0.0-beta.25562.4 + 9.0.0-beta.25577.5 + 9.0.0-beta.25577.5 + 9.0.0-beta.25577.5 9.0.1 9.0.1-rtm.24610.9 diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index 5baedac1e03..1037ccedcb5 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -65,7 +65,7 @@ jobs: demands: ImageOverride -equals build.ubuntu.2004.amd64 ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: 1es-mariner-2 + image: 1es-azurelinux-3 os: linux ${{ else }}: pool: diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index 0718e4ba902..7846584d2a7 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -41,7 +41,7 @@ steps: # in the default public locations. internalRuntimeDownloadArgs= if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://dotnetbuilds.blob.core.windows.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' + internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' fi buildConfig=Release diff --git a/global.json b/global.json index de7d7e59a00..d56d91db091 100644 --- a/global.json +++ b/global.json @@ -22,7 +22,7 @@ }, "msbuild-sdks": { "Microsoft.Build.NoTargets": "3.7.0", - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25562.4", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25562.4" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25577.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25577.5" } } From a709fb2db9d3c29727f543eea6509e7061b070ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 08:48:03 -0800 Subject: [PATCH 25/34] [main] Bump the azure-sdk-dependencies group with 1 update (#8738) Bumps Azure.Identity from 1.17.0 to 1.17.1 --- updated-dependencies: - dependency-name: Azure.Identity dependency-version: 1.17.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: azure-sdk-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/independent/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/independent/Versions.props b/eng/dependabot/independent/Versions.props index f53ff8cde3b..756682bb622 100644 --- a/eng/dependabot/independent/Versions.props +++ b/eng/dependabot/independent/Versions.props @@ -3,7 +3,7 @@ 1.50.0 - 1.17.0 + 1.17.1 12.26.0 12.24.0 4.0.1 From cfe31288710eee7ae0c2c54217e09a1108d86793 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 09:17:15 -0800 Subject: [PATCH 26/34] [main] Bump the identity-dependencies group with 1 update (#8748) Bumps Microsoft.Identity.Web from 4.0.1 to 4.1.1 --- updated-dependencies: - dependency-name: Microsoft.Identity.Web dependency-version: 4.1.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: identity-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- eng/dependabot/independent/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/independent/Versions.props b/eng/dependabot/independent/Versions.props index 756682bb622..a18058bbe35 100644 --- a/eng/dependabot/independent/Versions.props +++ b/eng/dependabot/independent/Versions.props @@ -6,7 +6,7 @@ 1.17.1 12.26.0 12.24.0 - 4.0.1 + 4.1.1 1.6.28 4.3.2 5.0.0 From 17e33208eee1a344780e4503e41720c604157810 Mon Sep 17 00:00:00 2001 From: Rodrigo Mendoza <43052640+rosanch@users.noreply.github.com> Date: Thu, 4 Dec 2025 09:43:39 -0800 Subject: [PATCH 27/34] Adding Docs for Ephemeral container use (#8716) * use as ephemeral sample * readme revision * PR validation * PR feedback * Spell checker --- samples/K8s_Ephemeral_Containers/README.md | 59 ++++++++++++++++++++ samples/K8s_Ephemeral_Containers/config.yaml | 12 ++++ 2 files changed, 71 insertions(+) create mode 100644 samples/K8s_Ephemeral_Containers/README.md create mode 100644 samples/K8s_Ephemeral_Containers/config.yaml diff --git a/samples/K8s_Ephemeral_Containers/README.md b/samples/K8s_Ephemeral_Containers/README.md new file mode 100644 index 00000000000..4bd2915da05 --- /dev/null +++ b/samples/K8s_Ephemeral_Containers/README.md @@ -0,0 +1,59 @@ +# Running dotnet-monitor as an Ephemeral Container in Kubernetes + +Running `dotnet-monitor` as an ephemeral container lets you attach diagnostics tooling to a live .NET workload only when you need it—without permanent resource, security, or operational overhead. Instead of baking tools into each application image or running a sidecar continuously, you temporarily inject a container to collect dumps, traces, logs, metrics, or other artifacts (even from hung or crash-looping processes) and then let it disappear. + +### Why use an ephemeral container? +* On-demand: No steady-state CPU/memory cost; start only for investigations. +* Lightweight images: Keep app container images free of extra tooling. +* Smaller attack surface: Elevated permissions and tooling exist for minutes, not the lifetime of the pod. +* Post-mortem access: Attach after failures or while the target process is unresponsive. +* Version independence: Use the latest `dotnet-monitor` image regardless of app version. +* Consistent workflow: Same injection procedure across all pods; no pre-provisioned sidecars. +* Cost aware: Fewer always-on containers reduces baseline resource usage. + +## Prerequisites +1. Kubernetes v1.25 or newer (ephemeral containers stable). +2. Target pod created with required env vars, volume, and volume mounts. + +## Inject dotnet monitor into a Pod +Prepare a [config file](config.yaml) whose values match the target's deployment dotnet monitor configuration. This step is performed once per pod lifetime; the ephemeral container persists until the pod restarts. + +```bash +Namespace="" +Pod="" +AppContainer="" +ConfigFile="./config.yaml" +MonitorPort=52323 + +kubectl debug -n "$Namespace" "pod/$Pod" \ + --image "mcr.microsoft.com/dotnet/monitor:10.0" \ + --container "debugger" \ + --profile "general" \ + --custom "$ConfigFile" +``` + +## Access the HTTP API +If you have existing [collection rules](../../documentation/api/collectionrules.md) and [egress](../../documentation/egress.md) configured, port-forwarding is optional; otherwise it enables ad-hoc requests. + +```bash +kubectl port-forward -n $Namespace pod/$Pod "${MonitorPort}:${MonitorPort}" +``` + +## Example: Collect a GC Dump +After port-forwarding, call the [HTTP API](../../documentation/api/README.md): + +```bash +ProcessId=1 +ts=$(date +'%Y%m%d_%H%M%S') +file="./diagnostics/gcdump_${ProcessId}_${ts}.gcdump" +uri="http://127.0.0.1:${MonitorPort}/gcdump?pid=${ProcessId}" +echo "[INFO] Collecting GC dump for PID ${ProcessId}" >&2 +mkdir -p "$(dirname "$file")" +curl -sS -H 'Accept: application/octet-stream' "$uri" -o "$file" +echo "[INFO] Saved GC dump to $file" >&2 +``` + +## Next Steps +* Use other endpoints for traces (`/trace`), process dumps (`/dump`), or metrics. +* Configure secure [authentication](../../documentation/authentication.md). +* Automate common investigations with [collection rules](../../documentation/collectionrules/collectionrules.md) and [egress](../../documentation/egress.md) before incidents occur. diff --git a/samples/K8s_Ephemeral_Containers/config.yaml b/samples/K8s_Ephemeral_Containers/config.yaml new file mode 100644 index 00000000000..888427fc3b9 --- /dev/null +++ b/samples/K8s_Ephemeral_Containers/config.yaml @@ -0,0 +1,12 @@ +{ + "volumeMounts": [ + { "name": "diagvol", "mountPath": "/diag" }, + ], + "env": [ + { "name": "DotnetMonitor_Urls", "value": "http://+:52323" }, + { "name": "DotnetMonitor_DiagnosticPort__ConnectionMode", "value": "Listen" }, + { "name": "DotnetMonitor_DiagnosticPort__EndpointName", "value": "/diag/dotnet-monitor.sock" }, + { "name": "DOTNETMONITOR_Storage__DefaultSharedPath", "value": "/diag" } + ], + args: [ "collect", "--no-auth" ] +} From f3b7ae7f7a0d2f4504bb55e2161d8f992d182a21 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 09:44:45 -0800 Subject: [PATCH 28/34] Update storage paths from dotnetbuilds.blob.core.windows.net to ci.dot.net (#8752) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: wiktork <15879456+wiktork@users.noreply.github.com> --- eng/helix/Helix.proj | 2 +- eng/pipelines/jobs/build.yml | 2 +- eng/pipelines/jobs/pack-sign-publish.yml | 2 +- eng/pipelines/jobs/sign-binaries.yml | 2 +- eng/pipelines/jobs/tpn.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/helix/Helix.proj b/eng/helix/Helix.proj index 063d4f9bfd9..e6e19adfcc1 100644 --- a/eng/helix/Helix.proj +++ b/eng/helix/Helix.proj @@ -119,7 +119,7 @@ - $([System.Environment]::GetEnvironmentVariable('DotNetBuildsInternalContainerReadToken')) diff --git a/eng/pipelines/jobs/build.yml b/eng/pipelines/jobs/build.yml index 57454563a74..9f27b7382dd 100644 --- a/eng/pipelines/jobs/build.yml +++ b/eng/pipelines/jobs/build.yml @@ -110,7 +110,7 @@ jobs: - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - _InternalInstallArgs: >- - -RuntimeSourceFeed https://dotnetbuilds.blob.core.windows.net/internal + -RuntimeSourceFeed https://ci.dot.net/internal -RuntimeSourceFeedKey $(dotnetbuilds-internal-container-read-token-base64) - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: diff --git a/eng/pipelines/jobs/pack-sign-publish.yml b/eng/pipelines/jobs/pack-sign-publish.yml index 06cc2f61ec9..5eaf8baa454 100644 --- a/eng/pipelines/jobs/pack-sign-publish.yml +++ b/eng/pipelines/jobs/pack-sign-publish.yml @@ -44,7 +44,7 @@ jobs: /p:DotNetPublishUsingPipelines=true /p:SkipPublishProjects=true /p:ThirdPartyNoticesFilePath='$(Build.SourcesDirectory)/$(_TPNFile)' - /p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal + /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) displayName: Pack, Sign, and Publish # Intentionally copying file as "dotnet-monitor.nupkg.buildversion" for back compat diff --git a/eng/pipelines/jobs/sign-binaries.yml b/eng/pipelines/jobs/sign-binaries.yml index 00ac5543744..e489fcb6082 100644 --- a/eng/pipelines/jobs/sign-binaries.yml +++ b/eng/pipelines/jobs/sign-binaries.yml @@ -43,7 +43,7 @@ jobs: /p:OfficialBuildId=$(BUILD.BUILDNUMBER) /p:DotNetSignType=real /p:SignAllBinaries=true - /p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal + /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) displayName: Sign diff --git a/eng/pipelines/jobs/tpn.yml b/eng/pipelines/jobs/tpn.yml index 9ca72f1aee5..c46713ff03f 100644 --- a/eng/pipelines/jobs/tpn.yml +++ b/eng/pipelines/jobs/tpn.yml @@ -9,7 +9,7 @@ jobs: - _InternalInstallArgs: '' - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - _InternalInstallArgs: >- - /p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal + /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) steps: - template: /eng/pipelines/steps/setup-nuget-sources.yml@self From c5b21fb49ec0ffbe8f4e830589ae68fbdb81bf16 Mon Sep 17 00:00:00 2001 From: Wiktor Kopec Date: Thu, 4 Dec 2025 10:02:58 -0800 Subject: [PATCH 29/34] Update docs (#8707) * Update docs * Fix typo in release process documentation Corrected spelling of 'similar' in the GA releases section. * Update documentation/release-process.md Co-authored-by: kkeirstead <85592574+kkeirstead@users.noreply.github.com> * Add note to revert changes post-release Added a note to revert changes after release. --------- Co-authored-by: kkeirstead <85592574+kkeirstead@users.noreply.github.com> --- documentation/release-process.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/documentation/release-process.md b/documentation/release-process.md index 19282ece9bf..a8983ad6fa8 100644 --- a/documentation/release-process.md +++ b/documentation/release-process.md @@ -23,6 +23,13 @@ - It can be helpful to create test release branches (e.g. release/test/8.x). Note these branches will trigger warnings because they are considered unprotected release branches and should be deleted as soon as possible. - If you created a build from a newly created release branch without a channel, you will get the message 'target build already exists on all channels'. To use this build you need to add it to a channel: `darc add-build-to-channel --id --channel "General Testing"`. +## Additional steps for GA releases + +1. [global.json](../global.json) typically points to `MicrosoftNETCoreApp100Version` and similar, but this will not work for GA releases (since the stable version has not yet been released). +1. Change `MicrosoftNETCoreApp100Version` to `VSRedistCommonNetCoreSharedFrameworkx64100Version` +1. Change `MicrosoftAspNetCoreApp100Version` `VSRedistCommonAspNetCoreSharedFrameworkx64100Version` +1. After the release is finished, this change should be reverted. + ## Updating dependencies If necessary, update dependencies in the release branch. @@ -33,7 +40,7 @@ If necessary, update dependencies in the release branch. 1. Use `darc get-subscriptions --target-repo monitor` to see existing subscriptions. 1. Use `darc trigger-subscriptions` to trigger an update. This will create a pull request that will update the Versions.details.xml file. 1. Sometimes an existing subscription needs to be updated. For example, when updating from Preview 5 to Preview 6: - +1. In some situations the build from the subscription may not be the one you want. You can manually update dependencies using `darc update-dependencies` ``` darc get-subscriptions --target-repo https://github.com/dotnet/dotnet-monitor --target-branch release/8.x https://github.com/dotnet/installer (.NET 8.0.1xx SDK Preview 5) ==> 'https://github.com/dotnet/dotnet-monitor' ('release/8.x') @@ -45,6 +52,8 @@ darc get-subscriptions --target-repo https://github.com/dotnet/dotnet-monitor -- https://github.com/dotnet/installer (.NET 8.0.1xx SDK Preview 6) ==> 'https://github.com/dotnet/dotnet-monitor' ('release/8.x') - Id: 2f528213-5355-43ec-0bf5-08db410c84fe +darc update-dependencies --id 288422 + ``` **For internal/release/\* build**: You will likely need to update the existing subscription to the **internal** sdk release. From a4b0116101f580f8d59234331180e774a3df7656 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:03:29 -0800 Subject: [PATCH 30/34] [main] Update dependencies from dotnet/diagnostics (#8733) * Update dependencies from https://github.com/dotnet/diagnostics build 20251112.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25562.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.656201 * Update dependencies from https://github.com/dotnet/diagnostics build 20251113.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25563.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.656301 * Update dependencies from https://github.com/dotnet/diagnostics build 20251115.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25565.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.656501 * Update dependencies from https://github.com/dotnet/diagnostics build 20251118.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25568.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.656801 * Update dependencies from https://github.com/dotnet/diagnostics build 20251119.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25569.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.656901 * Update dependencies from https://github.com/dotnet/diagnostics build 20251120.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25570.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657001 * Update dependencies from https://github.com/dotnet/diagnostics build 20251122.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25572.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657201 * Update dependencies from https://github.com/dotnet/diagnostics build 20251123.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25573.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657301 * Update dependencies from https://github.com/dotnet/diagnostics build 20251124.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25574.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657401 * Update dependencies from https://github.com/dotnet/diagnostics build 20251125.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25575.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657501 * Update dependencies from https://github.com/dotnet/diagnostics build 20251126.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25576.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657601 * Update dependencies from https://github.com/dotnet/diagnostics build 20251127.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25577.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657701 * Update dependencies from https://github.com/dotnet/diagnostics build 20251128.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25578.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.657801 * Update dependencies from https://github.com/dotnet/diagnostics build 20251130.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25580.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.658001 * Update dependencies from https://github.com/dotnet/diagnostics build 20251201.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25601.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.660101 * Update dependencies from https://github.com/dotnet/diagnostics build 20251202.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25602.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.660201 * Update dependencies from https://github.com/dotnet/diagnostics build 20251203.1 On relative base path root Microsoft.Diagnostics.Monitoring , Microsoft.Diagnostics.Monitoring.EventPipe From Version 9.0.0-preview.25561.1 -> To Version 9.0.0-preview.25603.1 Microsoft.FileFormats From Version 1.0.656101 -> To Version 1.0.660301 --------- Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d5ac1ede7bb..96f2fb6760d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -4,13 +4,13 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 4442a188f9200a57635373dcd640893c0e8dcc78 - + https://github.com/dotnet/diagnostics - ea6796b6d0556f8ab3c01d0c0d8f234fdfdf1d73 + 9c087c3226c188cd13c69b990ef820d7a93ceab5 - + https://github.com/dotnet/diagnostics - ea6796b6d0556f8ab3c01d0c0d8f234fdfdf1d73 + 9c087c3226c188cd13c69b990ef820d7a93ceab5 https://github.com/dotnet/command-line-api @@ -42,9 +42,9 @@ https://github.com/dotnet/arcade 0890ca08513391dafe556fb326c73c6c5c6cb329 - + https://github.com/dotnet/diagnostics - ea6796b6d0556f8ab3c01d0c0d8f234fdfdf1d73 + 9c087c3226c188cd13c69b990ef820d7a93ceab5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index af13594a692..033bfaf1d31 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -57,8 +57,8 @@ 2.0.0-rc.1.25408.2 - 9.0.0-preview.25561.1 - 9.0.0-preview.25561.1 + 9.0.0-preview.25603.1 + 9.0.0-preview.25603.1 9.0.0-preview.25076.3 @@ -67,7 +67,7 @@ 9.0.200-rtm.25073.13 - 1.0.656101 + 1.0.660301 $(MicrosoftNETCoreApp80Version) From 3f71746e4fb09e1a8fb20c9037ecee83414f6c70 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 03:08:44 +0000 Subject: [PATCH 31/34] Update dependencies from https://github.com/dotnet/diagnostics build 20251204.1 (#8763) [main] Update dependencies from dotnet/diagnostics --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 96f2fb6760d..893b046f2aa 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -4,13 +4,13 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 4442a188f9200a57635373dcd640893c0e8dcc78 - + https://github.com/dotnet/diagnostics - 9c087c3226c188cd13c69b990ef820d7a93ceab5 + a81816d3b17861fcaa506c8da27ea9333c4b3482 - + https://github.com/dotnet/diagnostics - 9c087c3226c188cd13c69b990ef820d7a93ceab5 + a81816d3b17861fcaa506c8da27ea9333c4b3482 https://github.com/dotnet/command-line-api @@ -42,9 +42,9 @@ https://github.com/dotnet/arcade 0890ca08513391dafe556fb326c73c6c5c6cb329 - + https://github.com/dotnet/diagnostics - 9c087c3226c188cd13c69b990ef820d7a93ceab5 + a81816d3b17861fcaa506c8da27ea9333c4b3482 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 033bfaf1d31..0bc7f382c41 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -57,8 +57,8 @@ 2.0.0-rc.1.25408.2 - 9.0.0-preview.25603.1 - 9.0.0-preview.25603.1 + 9.0.0-preview.25604.1 + 9.0.0-preview.25604.1 9.0.0-preview.25076.3 @@ -67,7 +67,7 @@ 9.0.200-rtm.25073.13 - 1.0.660301 + 1.0.660401 $(MicrosoftNETCoreApp80Version) From a2bc2c118f282b4cab0161ecf53dfba82fb20e3f Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 20:44:38 -0800 Subject: [PATCH 32/34] Remove references to eng/actions (#8761) * Initial plan * Remove references to eng/actions Co-authored-by: wiktork <15879456+wiktork@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: wiktork <15879456+wiktork@users.noreply.github.com> --- .github/CODEOWNERS | 1 - .github/workflows/sync-branches.yml | 1 - eng/pipelines/dotnet-monitor-official.yml | 1 - eng/pipelines/dotnet-monitor-public.yml | 1 - 4 files changed, 4 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f279d791db2..1c89d970d51 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -5,4 +5,3 @@ /eng/ global.json /eng/dependabot @dotnet/dotnet-monitor -/eng/actions @dotnet/dotnet-monitor diff --git a/.github/workflows/sync-branches.yml b/.github/workflows/sync-branches.yml index a08ea32bd73..0a9ec27d757 100644 --- a/.github/workflows/sync-branches.yml +++ b/.github/workflows/sync-branches.yml @@ -35,7 +35,6 @@ jobs: ".github" \ ".devcontainer" \ ".vscode" \ - "eng/actions" \ "cspell.json" \ "documentation/**.md" diff --git a/eng/pipelines/dotnet-monitor-official.yml b/eng/pipelines/dotnet-monitor-official.yml index 3dc774d1a51..3fef6c27fce 100644 --- a/eng/pipelines/dotnet-monitor-official.yml +++ b/eng/pipelines/dotnet-monitor-official.yml @@ -15,7 +15,6 @@ pr: - .vscode - .gitignore - cspell.json - - eng/actions - samples - '**.md' diff --git a/eng/pipelines/dotnet-monitor-public.yml b/eng/pipelines/dotnet-monitor-public.yml index 90bb8220fc4..1d0c4041077 100644 --- a/eng/pipelines/dotnet-monitor-public.yml +++ b/eng/pipelines/dotnet-monitor-public.yml @@ -15,7 +15,6 @@ pr: - .vscode - .gitignore - cspell.json - - eng/actions - samples - '**.md' From 6b5e71e735ab272aa37f1c0a1434963b5979c583 Mon Sep 17 00:00:00 2001 From: Wiktor Kopec Date: Fri, 5 Dec 2025 10:15:30 -0800 Subject: [PATCH 33/34] Revert "[main] Bump Microsoft.Diagnostics.DbgShim from 9.0.621003 to 9.0.652701 (#8690)" (#8768) This reverts commit 1626a814cbf4d14b3372a3931f4f86d06fc07b16. --- eng/dependabot/nuget.org/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/dependabot/nuget.org/Versions.props b/eng/dependabot/nuget.org/Versions.props index 5f04caf2927..c697645b9c1 100644 --- a/eng/dependabot/nuget.org/Versions.props +++ b/eng/dependabot/nuget.org/Versions.props @@ -2,6 +2,6 @@ - 9.0.652701 + 9.0.621003 From ad5847fd60e46bea8a21ef0e0ec306b375c40bf3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 18:30:02 +0000 Subject: [PATCH 34/34] Restore branch-specific files --- eng/common/core-templates/job/publish-build-assets.yml | 5 ----- eng/common/core-templates/job/source-build.yml | 2 +- eng/common/core-templates/post-build/post-build.yml | 5 ----- eng/common/cross/x64/tizen/tizen.patch | 9 --------- 4 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 eng/common/cross/x64/tizen/tizen.patch diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index e7daa6d2faf..37dff559fc1 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -180,11 +180,6 @@ jobs: PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x - - task: AzureCLI@2 displayName: Publish Using Darc inputs: diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index 4f45cce0f3f..d805d5faeb9 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -63,7 +63,7 @@ jobs: demands: ImageOverride -equals build.ubuntu.2004.amd64 ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: 1es-azurelinux-3 + image: 1es-mariner-2 os: linux ${{ else }}: pool: diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 55361908c2e..f6f87fe5c67 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -307,11 +307,6 @@ stages: - task: NuGetAuthenticate@1 - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x - - task: AzureCLI@2 displayName: Publish Using Darc inputs: diff --git a/eng/common/cross/x64/tizen/tizen.patch b/eng/common/cross/x64/tizen/tizen.patch deleted file mode 100644 index 56fbc881095..00000000000 --- a/eng/common/cross/x64/tizen/tizen.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -u -r a/usr/lib64/libc.so b/usr/lib64/libc.so ---- a/usr/lib64/libc.so 2016-12-30 23:00:08.284951863 +0900 -+++ b/usr/lib64/libc.so 2016-12-30 23:00:32.140951815 +0900 -@@ -2,4 +2,4 @@ - Use the shared library, but some functions are only in - the static library, so try that secondarily. */ - OUTPUT_FORMAT(elf64-x86-64) --GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-x86-64.so.2 ) ) -+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-x86-64.so.2 ) )