Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
206b88c
Update dependency powershell to v7.5.4 (#427)
renovate[bot] Oct 16, 2025
f072045
Update mcr.microsoft.com/dotnet/sdk:9.0.306-noble Docker digest to d8…
renovate[bot] Oct 17, 2025
91b0ec1
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Oct 21, 2025
a880a38
Drop EnableOptProf parameter where it is unused
AArnott Oct 22, 2025
a16d3f4
Add SBOM to `deployables` pipeline artifact
AArnott Oct 22, 2025
f3393ad
Bump MicroBuildVersion to 2.0.208
AArnott Oct 23, 2025
dd97dca
Fix artifact publishing failures due to prior failed attempts
AArnott Oct 23, 2025
9389c48
Switch from sln to slnx
AArnott Oct 23, 2025
2ce88f7
Merge branch 'main' into microbuild
AArnott Oct 23, 2025
68801e8
Clarify that symbols should be only 1st party
AArnott Oct 23, 2025
d1ffba2
Fix template expansion after slnx rename
AArnott Oct 24, 2025
6bcf345
Merge branch 'main' into microbuild
AArnott Oct 24, 2025
b725dee
Another template expansion fix
AArnott Oct 24, 2025
ffcd611
Merge branch 'main' into microbuild
AArnott Oct 24, 2025
cbf20ad
Update dependency docfx to v2.78.4 (#429)
renovate[bot] Oct 24, 2025
4ee5904
Update GitHub Artifact Actions
renovate[bot] Oct 25, 2025
9562677
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Oct 28, 2025
20dc055
Increase retry count on NOTICE task failure to 10
sandyarmstrong Oct 29, 2025
a75ec4b
Merge pull request #431 from sandyarmstrong/patch-1
AArnott Oct 29, 2025
3718db4
Merge the microbuild branch from https://github.com/aarnott/Library.T…
AArnott Oct 31, 2025
fe333c1
Update dependency xunit.v3 to 3.2.0
renovate[bot] Nov 3, 2025
ccb8e49
Update nbgv and nerdbank.gitversioning updates to 3.9.50
renovate[bot] Nov 5, 2025
26a3acc
Fix variable persistence when value includes a single quote
AArnott Nov 5, 2025
df1fdd1
Merge remote-tracking branch 'origin/main' into microbuild
AArnott Nov 5, 2025
217de25
Merge remote-tracking branch 'refs/remotes/origin/microbuild' into mi…
AArnott Nov 5, 2025
7fe12da
Merge the microbuild branch from https://github.com/aarnott/Library.T…
AArnott Nov 7, 2025
f8ac24c
Merge remote-tracking branch 'origin/main' into dev/andarno/libtempla…
AArnott Nov 7, 2025
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
6 changes: 3 additions & 3 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"powershell": {
"version": "7.5.3",
"version": "7.5.4",
"commands": [
"pwsh"
],
Expand All @@ -17,14 +17,14 @@
"rollForward": false
},
"nbgv": {
"version": "3.8.118",
"version": "3.9.50",
"commands": [
"nbgv"
],
"rollForward": false
},
"docfx": {
"version": "2.78.3",
"version": "2.78.4",
"commands": [
"docfx"
],
Expand Down
14 changes: 7 additions & 7 deletions .github/actions/publish-artifacts/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,46 +14,46 @@ runs:

- name: 📢 Upload project.assets.json files
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: projectAssetsJson-${{ runner.os }}
path: ${{ runner.temp }}/_artifacts/projectAssetsJson
continue-on-error: true
- name: 📢 Upload variables
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: variables-${{ runner.os }}
path: ${{ runner.temp }}/_artifacts/Variables
continue-on-error: true
- name: 📢 Upload build_logs
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: build_logs-${{ runner.os }}
path: ${{ runner.temp }}/_artifacts/build_logs
continue-on-error: true
- name: 📢 Upload testResults
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: testResults-${{ runner.os }}
path: ${{ runner.temp }}/_artifacts/testResults
continue-on-error: true
- name: 📢 Upload coverageResults
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: coverageResults-${{ runner.os }}
path: ${{ runner.temp }}/_artifacts/coverageResults
continue-on-error: true
- name: 📢 Upload symbols
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: symbols-${{ runner.os }}
path: ${{ runner.temp }}/_artifacts/symbols
continue-on-error: true
- name: 📢 Upload deployables
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: deployables-${{ runner.os }}
path: ${{ runner.temp }}/_artifacts/deployables
Expand Down
8 changes: 4 additions & 4 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>

<MicroBuildVersion>2.0.201</MicroBuildVersion>
<MicroBuildVersion>2.0.208</MicroBuildVersion>
<CodeAnalysisVersion>4.14.0</CodeAnalysisVersion>
<MicrosoftCodeAnalysisAnalyzersVersion>4.14.0</MicrosoftCodeAnalysisAnalyzersVersion>
<VSThreadingVersion>17.13.2</VSThreadingVersion>
Expand Down Expand Up @@ -34,13 +34,13 @@
<PackageVersion Include="System.Text.Json" Version="8.0.6" />
<PackageVersion Include="TraceSource.ActivityTracing" Version="0.1.201-beta" />
<PackageVersion Include="Xunit.Combinatorial" Version="2.0.24" />
<PackageVersion Include="xunit.v3.core" Version="3.1.0" />
<PackageVersion Include="xunit.v3.core.mtp-v1" Version="3.2.0" />
</ItemGroup>
<ItemGroup Label="Library.Template">
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
<PackageVersion Include="Microsoft.VisualStudio.Internal.MicroBuild.NonShipping" Version="$(MicroBuildVersion)" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
<PackageVersion Include="xunit.v3" Version="3.1.0" />
<PackageVersion Include="xunit.v3" Version="3.2.0" />
</ItemGroup>
<ItemGroup>
<GlobalPackageReference Include="Microsoft.CodeAnalysis.ResxSourceGenerator" Version="3.12.0-beta1.25218.8" />
Expand All @@ -50,7 +50,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.8.118" Condition="!('$(TF_BUILD)'=='true' and '$(dotnetformat)'=='true')" />
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.9.50" Condition="!('$(TF_BUILD)'=='true' and '$(dotnetformat)'=='true')" />
<GlobalPackageReference Include="PolySharp" Version="1.15.0" Condition="'$(DoNotReferenceNullable)'!='true'" />
<GlobalPackageReference Include="StyleCop.Analyzers.Unstable" Version="1.2.0.556" />
</ItemGroup>
Expand Down
86 changes: 58 additions & 28 deletions azure-pipelines/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,17 @@ parameters:
- name: artifact_names
type: object
default:
- build_logs
- coverageResults
- deployables
- projectAssetsJson
- symbols
- testResults
- test_symbols
- Variables
- name: build_logs
- name: coverageResults
- name: deployables
sbomEnabled: true
- name: projectAssetsJson
- name: symbols
- name: testResults
testOnly: true
- name: test_symbols
testOnly: true
- name: Variables
# The Enable*Build parameters turn non-Windows agents on or off.
# Their default value should be based on whether the build and tests are expected/required to pass on that platform.
# Callers (e.g. Official.yml) *may* expose these parameters at queue-time in order to turn OFF optional agents.
Expand All @@ -57,6 +60,11 @@ parameters:
- name: Is1ESPT
type: boolean

# Indicates whether the 'official' 1ES PT templates are being used (as opposed to the unofficial ones).
- name: Is1ESPTOfficial
type: boolean
default: false

- name: RealSign
type: boolean
default: false
Expand Down Expand Up @@ -148,13 +156,21 @@ jobs:

outputParentDirectory: $(Build.ArtifactStagingDirectory)
outputs:
- ${{ each artifact_name in parameters.artifact_names }}:
- ${{ if or(ne(artifact_name, 'testResults'), parameters.RunTests) }}:
- ${{ each artifact in parameters.artifact_names }}:
- ${{ if or(ne(artifact.testOnly, 'true'), parameters.RunTests) }}:
- output: pipelineArtifact
displayName: 📢 Publish ${{ artifact_name }}-Windows
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact_name }}-Windows
artifactName: ${{ artifact_name }}-Windows
condition: succeededOrFailed()
displayName: 📢 Publish ${{ artifact.name }}-Windows
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact.name }}-Windows
artifactName: ${{ artifact.name }}-Windows
${{ if and(parameters.Is1ESPTOfficial, eq(artifact.sbomEnabled, 'true')) }}:
sbomEnabled: true
- output: pipelineArtifact
displayName: 📢 Publish ${{ artifact.name }}-Windows (for failed attempts)
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact.name }}-Windows
artifactName: ${{ artifact.name }}-Windows-$(System.PhaseAttempt)
${{ if and(parameters.Is1ESPTOfficial, eq(artifact.sbomEnabled, 'true')) }}:
sbomEnabled: true
condition: failed()
- output: pipelineArtifact
displayName: 📢 Publish VSInsertion-Windows
targetPath: $(Build.ArtifactStagingDirectory)/VSInsertion-Windows
Expand Down Expand Up @@ -191,7 +207,6 @@ jobs:
- template: microbuild.before.yml
parameters:
EnableLocalization: ${{ parameters.EnableLocalization }}
EnableOptProf: ${{ parameters.EnableOptProf }}
IsOptProf: ${{ parameters.IsOptProf }}
ShouldSkipOptimize: ${{ parameters.ShouldSkipOptimize }}
RealSign: ${{ parameters.RealSign }}
Expand Down Expand Up @@ -224,7 +239,6 @@ jobs:
- ${{ if eq(variables['system.collectionId'], '011b8bdf-6d56-4f87-be0d-0092136884d9') }}:
- template: microbuild.after.yml
parameters:
EnableOptProf: ${{ parameters.EnableOptProf }}
IsOptProf: ${{ parameters.IsOptProf }}
SkipCodesignVerify: ${{ parameters.SkipCodesignVerify }}

Expand All @@ -242,13 +256,21 @@ jobs:
signWithProd: true
outputParentDirectory: $(Build.ArtifactStagingDirectory)
outputs:
- ${{ each artifact_name in parameters.artifact_names }}:
- ${{ if or(ne(artifact_name, 'testResults'), parameters.RunTests) }}:
- ${{ each artifact in parameters.artifact_names }}:
- ${{ if or(ne(artifact.testOnly, 'true'), parameters.RunTests) }}:
- output: pipelineArtifact
displayName: 📢 Publish ${{ artifact.name }}-Linux
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact.name }}-Linux
artifactName: ${{ artifact.name }}-Linux
${{ if and(parameters.Is1ESPTOfficial, eq(artifact.sbomEnabled, 'true')) }}:
sbomEnabled: true
- output: pipelineArtifact
displayName: 📢 Publish ${{ artifact_name }}-Linux
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact_name }}-Linux
artifactName: ${{ artifact_name }}-Linux
condition: succeededOrFailed()
displayName: 📢 Publish ${{ artifact.name }}-Linux (for failed attempts)
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact.name }}-Linux
artifactName: ${{ artifact.name }}-Linux-$(System.PhaseAttempt)
${{ if and(parameters.Is1ESPTOfficial, eq(artifact.sbomEnabled, 'true')) }}:
sbomEnabled: true
condition: failed()
steps:
- checkout: self
fetchDepth: 0 # avoid shallow clone so nbgv can do its work.
Expand Down Expand Up @@ -285,13 +307,21 @@ jobs:
signWithProd: true
outputParentDirectory: $(Build.ArtifactStagingDirectory)
outputs:
- ${{ each artifact_name in parameters.artifact_names }}:
- ${{ if or(ne(artifact_name, 'testResults'), parameters.RunTests) }}:
- ${{ each artifact in parameters.artifact_names }}:
- ${{ if or(ne(artifact.testOnly, 'true'), parameters.RunTests) }}:
- output: pipelineArtifact
displayName: 📢 Publish ${{ artifact.name }}-macOS
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact.name }}-macOS
artifactName: ${{ artifact.name }}-macOS
${{ if and(parameters.Is1ESPTOfficial, eq(artifact.sbomEnabled, 'true')) }}:
sbomEnabled: true
- output: pipelineArtifact
displayName: 📢 Publish ${{ artifact_name }}-macOS
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact_name }}-macOS
artifactName: ${{ artifact_name }}-macOS
condition: succeededOrFailed()
displayName: 📢 Publish ${{ artifact.name }}-macOS (for failed attempts)
targetPath: $(Build.ArtifactStagingDirectory)/${{ artifact.name }}-macOS
artifactName: ${{ artifact.name }}-macOS-$(System.PhaseAttempt)
${{ if and(parameters.Is1ESPTOfficial, eq(artifact.sbomEnabled, 'true')) }}:
sbomEnabled: true
condition: failed()
steps:
- checkout: self
fetchDepth: 0 # avoid shallow clone so nbgv can do its work.
Expand Down
3 changes: 0 additions & 3 deletions azure-pipelines/microbuild.after.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
parameters:
- name: EnableOptProf
type: boolean
default: false
- name: IsOptProf
type: boolean
default: false
Expand Down
5 changes: 1 addition & 4 deletions azure-pipelines/microbuild.before.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ parameters:
- name: EnableLocalization
type: boolean
default: false
- name: EnableOptProf
type: boolean
default: false
- name: IsOptProf
type: boolean
default: false
Expand All @@ -26,7 +23,7 @@ steps:
inputs:
outputfile: $(System.DefaultWorkingDirectory)/obj/NOTICE
outputformat: text
retryCountOnTaskFailure: 3 # fails when the cloud service is overloaded
retryCountOnTaskFailure: 10 # fails when the cloud service is overloaded
continueOnError: ${{ not(parameters.RealSign) }} # Tolerate failures when we're not building something that may ship.

- ${{ if parameters.IsOptProf }}:
Expand Down
1 change: 1 addition & 0 deletions azure-pipelines/official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ extends:
- template: /azure-pipelines/build.yml@self
parameters:
Is1ESPT: true
Is1ESPTOfficial: true
RealSign: true
ShouldSkipOptimize: ${{ parameters.ShouldSkipOptimize }}
EnableAPIScan: ${{ parameters.EnableAPIScan }}
Expand Down
2 changes: 1 addition & 1 deletion test/ServiceBrokerTest/ServiceBrokerTest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<PackageReference Include="microsoft.testing.platform.msbuild" ExcludeAssets="all" />
<PackageReference Include="StreamJsonRpc" />
<PackageReference Include="System.CommandLine" />
<PackageReference Include="xunit.v3.core" ExcludeAssets="all" />
<PackageReference Include="xunit.v3.core.mtp-v1" ExcludeAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Microsoft.ServiceHub.Framework\Microsoft.ServiceHub.Framework.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,13 @@ Function Get-PackageVersion($id) {
$version
}

# All 3rd party packages for which symbols packages are expected should be listed here.
# All 1st party packages for which symbols packages are expected should be listed here.
# These must all be sourced from nuget.org, as it is the only feed that supports symbol packages.
$3rdPartyPackageIds = @()
# We should NOT add 3rd party packages to this list because PDBs may be unsafe for our debuggers to load,
# so we should only archive 1st party symbols.
$1stPartyPackageIds = @()

$3rdPartyPackageIds | % {
$1stPartyPackageIds | % {
$version = Get-PackageVersion $_
if ($version) {
Get-SymbolsFromPackage -id $_ -version $version
Expand Down
2 changes: 1 addition & 1 deletion tools/artifacts/Variables.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Get-ChildItem "$PSScriptRoot/../variables" |% {

if ($value) {
# We got something, so wrap it with quotes so it's treated like a literal value.
$value = "'$value'"
$value = "'" + $value.Replace("'", "''") + "'"
}
}

Expand Down
6 changes: 3 additions & 3 deletions tools/artifacts/symbols.ps1
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
$BinPath = [System.IO.Path]::GetFullPath("$PSScriptRoot/../../bin")
$3rdPartyPath = [System.IO.Path]::GetFullPath("$PSScriptRoot/../../obj/SymbolsPackages")
$ExternalPath = [System.IO.Path]::GetFullPath("$PSScriptRoot/../../obj/SymbolsPackages")
if (!(Test-Path $BinPath)) { return }
$symbolfiles = & "$PSScriptRoot/../Get-SymbolFiles.ps1" -Path $BinPath | Get-Unique
$3rdPartyFiles = & "$PSScriptRoot/../Get-3rdPartySymbolFiles.ps1"
$ExternalFiles = & "$PSScriptRoot/../Get-ExternalSymbolFiles.ps1"

@{
"$BinPath" = $SymbolFiles;
"$3rdPartyPath" = $3rdPartyFiles;
"$ExternalPath" = $ExternalFiles;
}
Loading