Skip to content

Commit 5d6326a

Browse files
committed
Merge branch 'main' into UnskipTestsWithDoneIssues
2 parents 09d9fc0 + 6d679a2 commit 5d6326a

File tree

205 files changed

+6670
-3206
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

205 files changed

+6670
-3206
lines changed

.config/dotnet-tools.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"isRoot": true,
44
"tools": {
55
"microsoft.dotnet.darc": {
6-
"version": "1.1.0-beta.24256.1",
6+
"version": "1.1.0-beta.24327.2",
77
"commands": [
88
"darc"
99
]

.vsts-ci.yml

-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ extends:
6565
image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode
6666
cblMariner20Fpm:
6767
image: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-fpm
68-
centosStream8:
69-
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
7068
centosStream9:
7169
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
7270
debian11Amd64:

.vsts-pr.yml

-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ resources:
1818
containers:
1919
- container: alpine319WithNode
2020
image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode
21-
- container: centosStream8
22-
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
2321
- container: centosStream9
2422
image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
2523
- container: debian11Amd64

CODEOWNERS

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
/test/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishReadyToRun.cs @AntonLapounov
6969
# Publish.targets related to ILLink and ReadyToRun is own by both runtime and SDK team
7070
/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets @dotnet/illink-contrib @AntonLapounov @dotnet/dotnet-cli
71+
# Area-ClickOnce
7172
/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.ClickOnce.targets @sujitnayak
7273

7374
# Area-Watch

documentation/package-table.md

+81-239
Large diffs are not rendered by default.

eng/Version.Details.xml

+225-224
Large diffs are not rendered by default.

eng/Versions.props

+85-85
Large diffs are not rendered by default.

eng/common/SetupNugetSources.ps1

+82-61
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,31 @@
11
# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
22
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
33
# disabled internal Maestro (darc-int*) feeds.
4-
#
5-
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. This credential
6-
# is added via the standard environment variable VSS_NUGET_EXTERNAL_FEED_ENDPOINTS. See
7-
# https://github.com/microsoft/artifacts-credprovider/tree/v1.1.1?tab=readme-ov-file#environment-variables for more details
4+
#
5+
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
86
#
97
# See example call for this script below.
108
#
119
# - task: PowerShell@2
12-
# displayName: Setup Internal Feeds
10+
# displayName: Setup Private Feeds Credentials
1311
# condition: eq(variables['Agent.OS'], 'Windows_NT')
1412
# inputs:
1513
# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
16-
# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config
17-
# - task: NuGetAuthenticate@1
18-
#
14+
# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
15+
# env:
16+
# Token: $(dn-bot-dnceng-artifact-feeds-rw)
17+
#
1918
# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
2019
# This ensures that:
2120
# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
22-
# - The credential provider is installed
21+
# - The credential provider is installed.
2322
#
2423
# This logic is also abstracted into enable-internal-sources.yml.
2524

2625
[CmdletBinding()]
2726
param (
2827
[Parameter(Mandatory = $true)][string]$ConfigFile,
29-
[string]$Password
28+
$Password
3029
)
3130

3231
$ErrorActionPreference = "Stop"
@@ -35,23 +34,12 @@ Set-StrictMode -Version 2.0
3534

3635
. $PSScriptRoot\tools.ps1
3736

38-
$feedEndpoints = $null
39-
40-
# If a credential is provided, ensure that we don't overwrite the current set of
41-
# credentials that may have been provided by a previous call to the credential provider.
42-
if ($Password -and $null -ne $env:VSS_NUGET_EXTERNAL_FEED_ENDPOINTS) {
43-
$feedEndpoints = $env:VSS_NUGET_EXTERNAL_FEED_ENDPOINTS | ConvertFrom-Json
44-
} elseif ($Password) {
45-
$feedEndpoints = @{ endpointCredentials = @() }
46-
}
47-
4837
# Add source entry to PackageSources
49-
function AddPackageSource($sources, $SourceName, $SourceEndPoint, $pwd) {
38+
function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
5039
$packageSource = $sources.SelectSingleNode("add[@key='$SourceName']")
5140

52-
if ($null -eq $packageSource)
41+
if ($packageSource -eq $null)
5342
{
54-
Write-Host "`tAdding package source" $SourceName
5543
$packageSource = $doc.CreateElement("add")
5644
$packageSource.SetAttribute("key", $SourceName)
5745
$packageSource.SetAttribute("value", $SourceEndPoint)
@@ -61,33 +49,63 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $pwd) {
6149
Write-Host "Package source $SourceName already present."
6250
}
6351

64-
if ($pwd) {
65-
$feedEndpoints.endpointCredentials = AddCredential -endpointCredentials $feedEndpoints.endpointCredentials -source $SourceEndPoint -pwd $pwd
66-
}
52+
AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd
6753
}
6854

69-
# Add a new feed endpoint credential
70-
function AddCredential([array]$endpointCredentials, $source, $pwd) {
71-
$endpointCredentials += @{
72-
endpoint = $source;
73-
password = $pwd
55+
# Add a credential node for the specified source
56+
function AddCredential($creds, $source, $username, $pwd) {
57+
# If no cred supplied, don't do anything.
58+
if (!$pwd) {
59+
return;
7460
}
75-
return $endpointCredentials
61+
62+
# Looks for credential configuration for the given SourceName. Create it if none is found.
63+
$sourceElement = $creds.SelectSingleNode($Source)
64+
if ($sourceElement -eq $null)
65+
{
66+
$sourceElement = $doc.CreateElement($Source)
67+
$creds.AppendChild($sourceElement) | Out-Null
68+
}
69+
70+
# Add the <Username> node to the credential if none is found.
71+
$usernameElement = $sourceElement.SelectSingleNode("add[@key='Username']")
72+
if ($usernameElement -eq $null)
73+
{
74+
$usernameElement = $doc.CreateElement("add")
75+
$usernameElement.SetAttribute("key", "Username")
76+
$sourceElement.AppendChild($usernameElement) | Out-Null
77+
}
78+
$usernameElement.SetAttribute("value", $Username)
79+
80+
# Add the <ClearTextPassword> to the credential if none is found.
81+
# Add it as a clear text because there is no support for encrypted ones in non-windows .Net SDKs.
82+
# -> https://github.com/NuGet/Home/issues/5526
83+
$passwordElement = $sourceElement.SelectSingleNode("add[@key='ClearTextPassword']")
84+
if ($passwordElement -eq $null)
85+
{
86+
$passwordElement = $doc.CreateElement("add")
87+
$passwordElement.SetAttribute("key", "ClearTextPassword")
88+
$sourceElement.AppendChild($passwordElement) | Out-Null
89+
}
90+
91+
$passwordElement.SetAttribute("value", $pwd)
7692
}
7793

78-
function InsertMaestroInternalFeedCredentials($Sources, $pwd) {
79-
$maestroInternalSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]")
94+
function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) {
95+
$maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]")
8096

81-
ForEach ($PackageSource in $maestroInternalSources) {
82-
Write-Host "`tAdding credential for Maestro's feed:" $PackageSource.Key
83-
$feedEndpoints.endpointCredentials = AddCredential -endpointCredentials $feedEndpoints.endpointCredentials -source $PackageSource.value -pwd $pwd
97+
Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds."
98+
99+
ForEach ($PackageSource in $maestroPrivateSources) {
100+
Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key
101+
AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd
84102
}
85103
}
86104

87-
function EnableInternalPackageSources($DisabledPackageSources) {
88-
$maestroInternalSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
89-
ForEach ($DisabledPackageSource in $maestroInternalSources) {
90-
Write-Host "`tEnsuring internal source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource"
105+
function EnablePrivatePackageSources($DisabledPackageSources) {
106+
$maestroPrivateSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
107+
ForEach ($DisabledPackageSource in $maestroPrivateSources) {
108+
Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource"
91109
# Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries
92110
$DisabledPackageSources.RemoveChild($DisabledPackageSource)
93111
}
@@ -105,46 +123,49 @@ $doc.Load($filename)
105123

106124
# Get reference to <PackageSources> or create one if none exist already
107125
$sources = $doc.DocumentElement.SelectSingleNode("packageSources")
108-
if ($null -eq $sources) {
126+
if ($sources -eq $null) {
109127
$sources = $doc.CreateElement("packageSources")
110128
$doc.DocumentElement.AppendChild($sources) | Out-Null
111129
}
112130

131+
$creds = $null
132+
if ($Password) {
133+
# Looks for a <PackageSourceCredentials> node. Create it if none is found.
134+
$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials")
135+
if ($creds -eq $null) {
136+
$creds = $doc.CreateElement("packageSourceCredentials")
137+
$doc.DocumentElement.AppendChild($creds) | Out-Null
138+
}
139+
}
140+
113141
# Check for disabledPackageSources; we'll enable any darc-int ones we find there
114142
$disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources")
115-
if ($null -ne $disabledSources) {
143+
if ($disabledSources -ne $null) {
116144
Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node"
117-
EnableInternalPackageSources -DisabledPackageSources $disabledSources
145+
EnablePrivatePackageSources -DisabledPackageSources $disabledSources
118146
}
119147

120-
if ($Password) {
121-
InsertMaestroInternalFeedCredentials -Sources $sources -pwd $Password
122-
}
148+
$userName = "dn-bot"
149+
150+
# Insert credential nodes for Maestro's private feeds
151+
InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password
123152

124153
# 3.1 uses a different feed url format so it's handled differently here
125154
$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']")
126-
if ($null -ne $dotnet31Source) {
127-
AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v3/index.json" -pwd $Password
128-
AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v3/index.json" -pwd $Password
155+
if ($dotnet31Source -ne $null) {
156+
AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
157+
AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
129158
}
130159

131160
$dotnetVersions = @('5','6','7','8')
132161

133162
foreach ($dotnetVersion in $dotnetVersions) {
134163
$feedPrefix = "dotnet" + $dotnetVersion;
135164
$dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']")
136-
if ($dotnetSource) {
137-
AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedprefix-internal/nuget/v3/index.json" -pwd $Password
138-
AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v3/index.json" -pwd $Password
165+
if ($dotnetSource -ne $null) {
166+
AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
167+
AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
139168
}
140169
}
141170

142171
$doc.Save($filename)
143-
144-
# If any credentials were added or altered, update the VSS_NUGET_EXTERNAL_FEED_ENDPOINTS environment variable
145-
if ($null -ne $feedEndpoints) {
146-
# ci is set to true so vso logging commands will be used.
147-
$ci = $true
148-
Write-PipelineSetVariable -Name 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' -Value $($feedEndpoints | ConvertTo-Json) -IsMultiJobVariable $false
149-
Write-PipelineSetVariable -Name 'NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED' -Value "False" -IsMultiJobVariable $false
150-
}

eng/common/SetupNugetSources.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env bash
22

3-
# This script adds internal feeds required to build commits that depend on intenral package sources. For instance,
3+
# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
44
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
55
# disabled internal Maestro (darc-int*) feeds.
66
#

eng/common/core-templates/job/publish-build-assets.yml

+10-6
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,15 @@ jobs:
8787

8888
- task: NuGetAuthenticate@1
8989

90-
- task: PowerShell@2
90+
- task: AzureCLI@2
9191
displayName: Publish Build Assets
9292
inputs:
93-
filePath: eng\common\sdk-task.ps1
93+
azureSubscription: "Darc: Maestro Production"
94+
scriptType: ps
95+
scriptLocation: scriptPath
96+
scriptPath: $(Build.SourcesDirectory)/eng/common/sdk-task.ps1
9497
arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
9598
/p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
96-
/p:BuildAssetRegistryToken=$(MaestroAccessToken)
9799
/p:MaestroApiEndpoint=https://maestro.dot.net
98100
/p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }}
99101
/p:OfficialBuildId=$(Build.BuildNumber)
@@ -153,14 +155,16 @@ jobs:
153155
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
154156
is1ESPipeline: ${{ parameters.is1ESPipeline }}
155157

156-
- task: PowerShell@2
158+
- task: AzureCLI@2
157159
displayName: Publish Using Darc
158160
inputs:
159-
filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
161+
azureSubscription: "Darc: Maestro Production"
162+
scriptType: ps
163+
scriptLocation: scriptPath
164+
scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
160165
arguments: -BuildId $(BARBuildId)
161166
-PublishingInfraVersion 3
162167
-AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)'
163-
-MaestroToken '$(MaestroApiAccessToken)'
164168
-WaitPublishingFinish true
165169
-ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
166170
-SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'

eng/common/core-templates/post-build/common-variables.yml

-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ variables:
88
# Default Maestro++ API Endpoint and API Version
99
- name: MaestroApiEndPoint
1010
value: "https://maestro.dot.net"
11-
- name: MaestroApiAccessToken
12-
value: $(MaestroAccessToken)
1311
- name: MaestroApiVersion
1412
value: "2020-02-20"
1513

eng/common/core-templates/post-build/post-build.yml

+5-3
Original file line numberDiff line numberDiff line change
@@ -300,14 +300,16 @@ stages:
300300

301301
- task: NuGetAuthenticate@1
302302

303-
- task: PowerShell@2
303+
- task: AzureCLI@2
304304
displayName: Publish Using Darc
305305
inputs:
306-
filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
306+
azureSubscription: "Darc: Maestro Production"
307+
scriptType: ps
308+
scriptLocation: scriptPath
309+
scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
307310
arguments: -BuildId $(BARBuildId)
308311
-PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
309312
-AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)'
310-
-MaestroToken '$(MaestroApiAccessToken)'
311313
-WaitPublishingFinish true
312314
-ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
313315
-SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'

eng/common/core-templates/post-build/setup-maestro-vars.yml

+15-15
Original file line numberDiff line numberDiff line change
@@ -15,35 +15,37 @@ steps:
1515
artifactName: ReleaseConfigs
1616
checkDownloadedFiles: true
1717

18-
- task: PowerShell@2
18+
- task: AzureCLI@2
1919
name: setReleaseVars
2020
displayName: Set Release Configs Vars
2121
inputs:
22-
targetType: inline
23-
pwsh: true
24-
script: |
22+
azureSubscription: "Darc: Maestro Production"
23+
scriptType: pscore
24+
scriptLocation: inlineScript
25+
inlineScript: |
2526
try {
2627
if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') {
2728
$Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt
2829
2930
$BarId = $Content | Select -Index 0
30-
$Channels = $Content | Select -Index 1
31+
$Channels = $Content | Select -Index 1
3132
$IsStableBuild = $Content | Select -Index 2
3233
3334
$AzureDevOpsProject = $Env:System_TeamProject
3435
$AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId
3536
$AzureDevOpsBuildId = $Env:Build_BuildId
3637
}
3738
else {
38-
$buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}"
39+
. $(Build.SourcesDirectory)\eng\common\tools.ps1
40+
$darc = Get-Darc
41+
$buildInfo = & $darc get-build `
42+
--id ${{ parameters.BARBuildId }} `
43+
--extended `
44+
--output-format json `
45+
--ci `
46+
| convertFrom-Json
3947
40-
$apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]'
41-
$apiHeaders.Add('Accept', 'application/json')
42-
$apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}")
43-
44-
$buildInfo = try { Invoke-WebRequest -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" }
45-
46-
$BarId = $Env:BARBuildId
48+
$BarId = ${{ parameters.BARBuildId }}
4749
$Channels = $Env:PromoteToMaestroChannels -split ","
4850
$Channels = $Channels -join "]["
4951
$Channels = "[$Channels]"
@@ -69,6 +71,4 @@ steps:
6971
exit 1
7072
}
7173
env:
72-
MAESTRO_API_TOKEN: $(MaestroApiAccessToken)
73-
BARBuildId: ${{ parameters.BARBuildId }}
7474
PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }}

0 commit comments

Comments
 (0)