Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
6a4e43c
Split the VS PR stage separately from the upload steps
pieandcakes Oct 13, 2025
9ca01b2
Split into jobs instead of stages
AArnott Oct 16, 2025
e302f54
Merge pull request 424 from pieandcakes/users/piel/stageinsertion
AArnott Oct 16, 2025
14a7d27
Call out `dotnet-test-cloud.ps1` script
AArnott Jun 2, 2026
8be6654
Add Copilot skill for bundling dependency update PRs
AArnott Jun 2, 2026
e6bb7a1
Call out docfx checks when bundling dependency update PRs
AArnott Jun 2, 2026
5f59179
Merge branch 'main' into microbuild
AArnott Jun 2, 2026
81b3496
Update actions/checkout action to v6.0.3 (523)
renovate[bot] Jun 2, 2026
2816e20
Update dependency nerdbank.dotnetrepotools to v1.5.6 (524)
renovate[bot] Jun 3, 2026
dba613e
Update dependency nerdbank.dotnetrepotools to v1.5.15 (525)
renovate[bot] Jun 4, 2026
cd79894
Update dependency dotnet-coverage to v18.8.0 (526)
renovate[bot] Jun 8, 2026
03a29b9
Update Dockerfile and global.json updates to v10.0.301 (527)
renovate[bot] Jun 10, 2026
6c56573
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jun 10, 2026
d48cdf8
Fix GitHub Actions env file writes (528)
AArnott Jun 10, 2026
910fad8
Update actions/checkout action to v6.0.3
AArnott Jun 10, 2026
72ac8a9
Improve PR checks after fixing dependency PRs
AArnott Jun 10, 2026
937aeb0
Update Microsoft Testing Platform to 18.8.0
AArnott Jun 11, 2026
a8d7f71
Merge branch 'main' into microbuild
AArnott Jun 11, 2026
8ce74d4
Support multi-line env var values properly
AArnott Jun 15, 2026
22ebcf5
Centralize the github env var function
AArnott Jun 15, 2026
2de1d1f
Merge pull request #529 from AArnott/betterGitHubEnvVars
AArnott Jun 15, 2026
1600fb8
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jun 15, 2026
4a5b860
Update dependency powershell to v7.6.3 (#530)
renovate[bot] Jun 17, 2026
e57033f
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jun 17, 2026
3fcf71e
Update actions/checkout action to v7
AArnott Jun 18, 2026
697a943
Merge branch 'main' into microbuild
AArnott Jun 18, 2026
24026df
Merge remote-tracking branch 'origin/microbuild_staging' into microbuild
AArnott Jun 18, 2026
9319738
Update nbgv and nerdbank.gitversioning updates to 3.10.85 (531)
renovate[bot] Jun 19, 2026
3f53cb6
Revert unintended whitespace changes
AArnott Jun 20, 2026
277d401
Merge branch 'main' into microbuild
AArnott Jun 20, 2026
8a8921a
Update jobs to ubuntu 24
AArnott Jun 22, 2026
d7904f8
Update Dockerfile and global.json updates (532)
renovate[bot] Jun 25, 2026
a1ba569
Update Microsoft Testing Platform to 2.3.0
renovate[bot] Jul 7, 2026
35daa41
Pin Microsoft.Testing.Extensions.Telemetry to the common MTP version
AArnott Jul 7, 2026
3291087
Merge pull request 533 from AArnott/renovate/microsoft-testing-platform
AArnott Jul 7, 2026
e11a693
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jul 7, 2026
eba6257
Revert "Use default configuration for Network Isolation" (#534)
AArnott Jul 7, 2026
4299650
Fix typo
AArnott Jul 7, 2026
90ac1ee
Use preferred pattern for appending to PATH in GitHub Actions
AArnott Jul 7, 2026
6320f43
Merge pull request #535 from AArnott/update-path-handling
AArnott Jul 7, 2026
e1c8aa4
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jul 7, 2026
5a0a13f
Avoid loading GitHubActions.ps1 on Azure Pipelines
AArnott Jul 7, 2026
def42bc
Merge branch 'main' into microbuild
AArnott Jul 7, 2026
097060a
Validate Path parameter in Add-GitHubActionsEnvVariable
AArnott Jul 7, 2026
b182ee0
Merge branch 'main' into microbuild
AArnott Jul 7, 2026
5cd226a
Fix 1ES PT nuget push
AArnott Jul 8, 2026
b5153f6
Update dependency dotnet-coverage to v18.9.0 (536)
renovate[bot] Jul 8, 2026
42c5cea
Update dependency Microsoft.Testing.Extensions.CodeCoverage to 18.9.0…
renovate[bot] Jul 8, 2026
3749d32
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jul 8, 2026
e6e3c19
Revert "Update dependency dotnet-coverage to v18.9.0 (536)"
AArnott Jul 8, 2026
c43fba6
Prevent empty paths from being added to the PATH
AArnott Jul 8, 2026
65a9b52
Merge branch 'main' into microbuild
AArnott Jul 8, 2026
a4d4554
Fix up error messages
AArnott Jul 8, 2026
8201f77
Avoid importing GitHubActions.ps1 outside GitHub Actions
AArnott Jul 8, 2026
6ab1b59
Merge branch 'main' into microbuild
AArnott Jul 8, 2026
3ee5eeb
Clarify yml comment
AArnott Jul 8, 2026
3948cdc
Update script synopsis
AArnott Jul 8, 2026
bd12df8
Merge branch 'main' into microbuild
AArnott Jul 8, 2026
6a14f76
Clarify what looks like bad wording
AArnott Jul 8, 2026
c456c94
Update nbgv and nerdbank.gitversioning updates to 3.10.91 (538)
renovate[bot] Jul 8, 2026
036db57
Cache the dotnet-install scripts locally
AArnott Jul 9, 2026
4f85ae7
Merge pull request 540 from AArnott:local-dotnet-install
AArnott Jul 9, 2026
bac6223
Restore missing VSInsertion artifact download task
AArnott Jul 9, 2026
6b93b0d
Update Microsoft Testing Platform to 2.3.1 (539)
renovate[bot] Jul 9, 2026
1573a0b
Fix vs-validation pipeline's artifact download task
AArnott Jul 9, 2026
c98e75f
Reapply update to dotnet-coverage 18.9.0 (536)
AArnott Jul 10, 2026
327eaa2
Move AI files to a more generic place
AArnott Jul 11, 2026
1adc880
Update Microsoft Testing Platform to 2.3.2 (#541)
renovate[bot] Jul 13, 2026
ac1e521
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Jul 13, 2026
c3b5b12
Bump .NET SDK to v10.0.302 (#542)
renovate[bot] Jul 14, 2026
b4607e8
Merge branch 'main' into microbuild
AArnott Jul 14, 2026
d64a345
Merge latest Library.Template
invalid-email-address Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .agents/skills/bundle-dependency-prs/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
name: bundle-dependency-prs
description: Fix broken dependency update PRs and aggregate the ones that work into one PR.
disable-model-invocation: true
---

# Instructions

You have two goals:

1. Get all dependency PRs to a state where their PR checks pass.
2. Aggregate dependency PRs with passing checks into just one PR.

You can identify dependency update PRs by those authored by `dependabot` or `renovate`.

You'll find instructions for building and validating the repo in the [CONTRIBUTING.md](../../../CONTRIBUTING.md) doc.
Always validate your changes locally before pushing them to the remote repository.

When writing PR bodies or comments, avoid unmatched markdown code fences. Keep markdown well-formed.

For purposes of assessing PR readiness by its PR checks, consider docfx related checks to be irrelevant.
If a docfx check fails but all other checks succeed, then that is a 'successful' dependency update PR.

## Fix up dependency PRs with failing checks

Before aggregating PRs, first try to fix any individual dependency update PRs with failing build/test checks.

1. For the dependency PRs with failing build or test PR checks, check out their source branch and fix any issues.
2. Push your fixes as fresh commits to the individual dependency PRs.
If pushing to a repo in the `microsoft` org when the PR is authored by `renovate`, follow-up the push with a PR comment that says exactly this: "/azp run" which triggers PR checks to re-run.
3. If you can't fix a particular PR, add a comment to the PR describing your attempt and outcome.

## Group dependency PRs that are ready to go

Your next goal is to collect all the dependency updates that are ready to go into a single PR.

1. Prepare a local branch called `bulkDepUpdates`.
1. Consider that a remote branch by the same name may already exist. If it does, base your local branch on it.
2. Merge `origin/main` into this branch.
3. Resolve any conflicts.
2. For the dependency PRs whose build and test PR checks already pass, merge them into the `bulkDepUpdates` branch.
Consider that your local branch may have already merged an equivalent PR in the past (from a past run). If so, you should skip merging that PR.
Resolve any conflicts.
Build and run tests to validate your branch.
3. Push the branch.
4. Create a PR, if one does not already exist.
8 changes: 4 additions & 4 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@
"isRoot": true,
"tools": {
"powershell": {
"version": "7.6.2",
"version": "7.6.3",
"commands": [
"pwsh"
],
"rollForward": false
},
"dotnet-coverage": {
"version": "18.7.0",
"version": "18.9.0",
"commands": [
"dotnet-coverage"
],
"rollForward": false
},
"nbgv": {
"version": "3.9.50",
"version": "3.10.91",
"commands": [
"nbgv"
],
Expand All @@ -31,7 +31,7 @@
"rollForward": false
},
"nerdbank.dotnetrepotools": {
"version": "1.4.1",
"version": "1.5.15",
"commands": [
"repo"
],
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
# You can define any steps you want, and they will run before the agent starts.
# If you do not check out your code, Copilot will do this for you.
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.
- name: ⚙ Install prerequisites
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/libtemplate-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0 # avoid shallow clone so nbgv can do its work.

Expand Down
File renamed without changes.
8 changes: 7 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,11 @@ This repository can be built on Windows, Linux, and OSX.

Building, testing, and packing this repository can be done by using the standard dotnet CLI commands (e.g. `dotnet build`, `dotnet test`, `dotnet pack`, etc.).

[pwsh]: https://learn.microsoft.com/powershell/scripting/install/installing-powershell
## Testing

You can use `dotnet test` to build and/or test the repo.

There may be tests that are known to be unstable or have special requirements. These can be avoided by running tests using the [dotnet-test-cloud.ps1](tools/dotnet-test-cloud.ps1) script *after* running `dotnet build`.

## Releases

Expand Down Expand Up @@ -102,3 +106,5 @@ git checkout origin/main
# resolve any conflicts, then commit the merge commit.
git push origin -u HEAD
```

[pwsh]: https://learn.microsoft.com/powershell/scripting/install/installing-powershell
7 changes: 4 additions & 3 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
<MicrosoftTestingPlatformVersion>2.2.3</MicrosoftTestingPlatformVersion>
<MicrosoftTestingPlatformVersion>2.3.2</MicrosoftTestingPlatformVersion>

<MicroBuildVersion>2.0.226</MicroBuildVersion>
</PropertyGroup>
Expand All @@ -17,9 +17,10 @@
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
</ItemGroup>
<ItemGroup Label="Library.Template">
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.7.0" />
<PackageVersion Include="Microsoft.Testing.Extensions.CodeCoverage" Version="18.9.0" />
<PackageVersion Include="Microsoft.Testing.Extensions.CrashDump" Version="$(MicrosoftTestingPlatformVersion)" />
<PackageVersion Include="Microsoft.Testing.Extensions.HangDump" Version="$(MicrosoftTestingPlatformVersion)" />
<PackageVersion Include="Microsoft.Testing.Extensions.Telemetry" Version="$(MicrosoftTestingPlatformVersion)" />
<PackageVersion Include="Microsoft.Testing.Extensions.TrxReport" Version="$(MicrosoftTestingPlatformVersion)" />
<PackageVersion Include="Microsoft.VisualStudio.Internal.MicroBuild.NonShipping" Version="$(MicroBuildVersion)" />
<PackageVersion Include="xunit.v3.mtp-v2" Version="3.2.2" />
Expand All @@ -33,7 +34,7 @@
<GlobalPackageReference Include="DotNetAnalyzers.DocumentationAnalyzers" Version="1.0.0-beta.59" />
<GlobalPackageReference Include="Microsoft.VisualStudio.Internal.MicroBuild.VisualStudio" Version="$(MicroBuildVersion)" />
<!-- The condition works around https://github.com/dotnet/sdk/issues/44951 -->
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.9.50" Condition="!('$(TF_BUILD)'=='true' and '$(dotnetformat)'=='true')" />
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.10.91" Condition="!('$(TF_BUILD)'=='true' and '$(dotnetformat)'=='true')" />
<GlobalPackageReference Include="PolySharp" Version="1.16.0" />
<GlobalPackageReference Include="StyleCop.Analyzers.Unstable" Version="1.2.0.556" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines/archive-sourcecode.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ extends:
pool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu24.04
os: Linux

steps:
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines/libtemplate-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ extends:
pool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu24.04
os: Linux
steps:
- checkout: self
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines/official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ extends:
linuxPool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu24.04
os: Linux
macOSPool:
name: Azure Pipelines
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines/prepare-insertion-stages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ stages:
pool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu22.04 # Do NOT upgrade this job to Ubuntu24 until this is fixed: https://portal.microsofticm.com/imp/v5/incidents/details/830879871/summary
os: Linux
templateContext:
outputs:
Expand Down
4 changes: 2 additions & 2 deletions azure-pipelines/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ extends:
pool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu22.04 # Do NOT upgrade this job to Ubuntu24 until this is fixed: https://portal.microsofticm.com/imp/v5/incidents/details/830879871/summary
os: Linux
templateContext:
outputs:
Expand All @@ -61,7 +61,7 @@ extends:
pool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu24.04
os: Linux
templateContext:
type: releaseJob
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines/unofficial.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ extends:
linuxPool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu24.04
os: Linux
macOSPool:
name: Azure Pipelines
Expand Down
17 changes: 15 additions & 2 deletions azure-pipelines/vs-insertion.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ extends:
stages:
- stage: insertion
jobs:
- job: insertion
displayName: VS insertion
- job: upload
displayName: Upload VS payload
pool: VSEng-MicroBuildVSStable
templateContext:
outputParentDirectory: $(Pipeline.Workspace)/CI
Expand All @@ -64,6 +64,19 @@ extends:
packageParentPath: $(Pipeline.Workspace)/CI/VSInsertion-Windows
allowPackageConflicts: true
publishVstsFeed: VS

- job: insert
dependsOn: upload
displayName: VS insertion
pool: VSEngSS-MicroBuild2022-1ES
templateContext:
outputParentDirectory: $(Pipeline.Workspace)/CI
steps:
- checkout: none
- template: azure-pipelines/release-deployment-prep.yml@self
- download: CI
artifact: VSInsertion-Windows
displayName: 🔻 Download VSInsertion-Windows artifact
- task: MicroBuildInsertVsPayload@5
displayName: 🏭 Insert VS Payload
inputs:
Expand Down
23 changes: 20 additions & 3 deletions azure-pipelines/vs-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ extends:
linuxPool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
- ImageOverride -equals 1ESPT-Ubuntu24.04
os: Linux
macOSPool:
name: Azure Pipelines
Expand All @@ -73,8 +73,8 @@ extends:
- stage: insertion
displayName: VS insertion
jobs:
- job: insertion
displayName: VS insertion
- job: upload
displayName: Upload VS payload
pool: VSEng-MicroBuildVSStable
steps:
- checkout: self
Expand Down Expand Up @@ -102,6 +102,23 @@ extends:
packageParentPath: $(Pipeline.Workspace)/VSInsertion-Windows
allowPackageConflicts: true
publishVstsFeed: VS

- job: insertion
displayName: VS insertion
dependsOn: upload
pool: VSEngSS-MicroBuild2022-1ES
steps:
- checkout: self
clean: true
fetchDepth: 1
- download: current
artifact: Variables-Windows
displayName: 🔻 Download Variables-Windows artifact
- powershell: $(Pipeline.Workspace)/Variables-Windows/_define.ps1
displayName: ⚙️ Set pipeline variables based on artifacts
- download: current
artifact: VSInsertion-Windows
displayName: 🔻 Download VSInsertion-Windows artifact
- task: MicroBuildInsertVsPayload@5
displayName: 🏭 Insert VS Payload
inputs:
Expand Down
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"sdk": {
"version": "10.0.300",
"version": "10.0.302",
"rollForward": "patch",
"allowPrerelease": false
},
Expand Down
41 changes: 41 additions & 0 deletions tools/GitHubActions.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
function Add-GitHubActionsEnvVariable {
param(
[string]$Path = $env:GITHUB_ENV,
[Parameter(Mandatory = $true)]
[string]$Name,
[Parameter(Mandatory = $true)]
[AllowEmptyString()]
[string]$Value
)

if ([string]::IsNullOrWhiteSpace($Path)) {
throw "GitHub Actions GITHUB_ENV file path must not be empty."
}

if ([string]::IsNullOrWhiteSpace($Name)) {
throw "GitHub Actions environment variable name must not be empty."
}

$utf8NoBom = [System.Text.UTF8Encoding]::new($false)
$delimiter = [guid]::NewGuid().ToString('N')
[System.IO.File]::AppendAllText($Path, "$Name<<$delimiter`n$Value`n$delimiter`n", $utf8NoBom)
}

function Add-GitHubActionsPath {
param(
[string]$Path = $env:GITHUB_PATH,
[Parameter(Mandatory = $true)]
[string]$Value
)

if ([string]::IsNullOrWhiteSpace($Path)) {
throw "GitHub Actions GITHUB_PATH file path must not be empty."
}

if ([string]::IsNullOrWhiteSpace($Value)) {
throw "GitHub Actions path entry must not be empty."
}

$utf8NoBom = [System.Text.UTF8Encoding]::new($false)
[System.IO.File]::AppendAllText($Path, "$Value`n", $utf8NoBom)
}
13 changes: 5 additions & 8 deletions tools/Install-DotNetSdk.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -284,18 +284,15 @@ if ($IncludeX86) {
}

if ($IsMacOS -or $IsLinux) {
$DownloadUri = "https://raw.githubusercontent.com/dotnet/install-scripts/a3fbd0fd625032bac207f1f590e5353fe26faa59/src/dotnet-install.sh"
$DotNetInstallScriptPath = "$DotNetInstallScriptRoot/dotnet-install.sh"
$DotNetInstallScriptPath = "$PSScriptRoot/dotnet-install.sh"
} else {
$DownloadUri = "https://raw.githubusercontent.com/dotnet/install-scripts/a3fbd0fd625032bac207f1f590e5353fe26faa59/src/dotnet-install.ps1"
$DotNetInstallScriptPath = "$DotNetInstallScriptRoot/dotnet-install.ps1"
$DotNetInstallScriptPath = "$PSScriptRoot/dotnet-install.ps1"
}

# Verify the cached script exists
if (-not (Test-Path $DotNetInstallScriptPath)) {
Invoke-WebRequest -Uri $DownloadUri -OutFile $DotNetInstallScriptPath -UseBasicParsing
if ($IsMacOS -or $IsLinux) {
chmod +x $DotNetInstallScriptPath
}
Write-Error "Cached dotnet-install script not found at $DotNetInstallScriptPath. Run tools/Update-DotNetInstallScript.ps1 to download it."
exit 1
}

# In case the script we invoke is in a directory with spaces, wrap it with single quotes.
Expand Down
Loading