Skip to content

Commit 3ce68de

Browse files
[main] Update dependencies from dotnet/arcade (#5554)
[main] Update dependencies from dotnet/arcade
1 parent ca76d51 commit 3ce68de

Some content is hidden

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

46 files changed

+493
-455
lines changed

eng/Version.Details.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
<ProductDependencies>
55
</ProductDependencies>
66
<ToolsetDependencies>
7-
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24272.5">
7+
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24306.4">
88
<Uri>https://github.com/dotnet/arcade</Uri>
9-
<Sha>2001d73c8ff942331a73300ba61fa6164805b231</Sha>
9+
<Sha>7507f80c8db285bbc9939c1dff522a761cf4edc0</Sha>
1010
</Dependency>
11-
<Dependency Name="Microsoft.DotNet.GenFacades" Version="9.0.0-beta.24272.5">
11+
<Dependency Name="Microsoft.DotNet.GenFacades" Version="9.0.0-beta.24306.4">
1212
<Uri>https://github.com/dotnet/arcade</Uri>
13-
<Sha>2001d73c8ff942331a73300ba61fa6164805b231</Sha>
13+
<Sha>7507f80c8db285bbc9939c1dff522a761cf4edc0</Sha>
1414
</Dependency>
15-
<Dependency Name="Microsoft.DotNet.XUnitExtensions" Version="9.0.0-beta.24272.5">
15+
<Dependency Name="Microsoft.DotNet.XUnitExtensions" Version="9.0.0-beta.24306.4">
1616
<Uri>https://github.com/dotnet/arcade</Uri>
17-
<Sha>2001d73c8ff942331a73300ba61fa6164805b231</Sha>
17+
<Sha>7507f80c8db285bbc9939c1dff522a761cf4edc0</Sha>
1818
</Dependency>
1919
</ToolsetDependencies>
2020
</Dependencies>

eng/Versions.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
</PropertyGroup>
1919
<!-- Arcade dependencies -->
2020
<PropertyGroup>
21-
<MicrosoftDotNetGenFacadesPackageVersion>9.0.0-beta.24272.5</MicrosoftDotNetGenFacadesPackageVersion>
22-
<MicrosoftDotNetXUnitExtensionsPackageVersion>9.0.0-beta.24272.5</MicrosoftDotNetXUnitExtensionsPackageVersion>
21+
<MicrosoftDotNetGenFacadesPackageVersion>9.0.0-beta.24306.4</MicrosoftDotNetGenFacadesPackageVersion>
22+
<MicrosoftDotNetXUnitExtensionsPackageVersion>9.0.0-beta.24306.4</MicrosoftDotNetXUnitExtensionsPackageVersion>
2323
</PropertyGroup>
2424
<!-- CoreFx dependencies -->
2525
<PropertyGroup>

eng/common/SetupNugetSources.ps1

Lines changed: 71 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
1-
# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds.
2-
# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080
1+
# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
2+
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
3+
# 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
38
#
4-
# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry
5-
# under <packageSourceCredentials> for each Maestro managed private feed. Two additional credential
6-
# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport.
7-
#
8-
# This script needs to be called in every job that will restore packages and which the base repo has
9-
# private AzDO feeds in the NuGet.config.
10-
#
11-
# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)`
12-
# from the AzureDevOps-Artifact-Feeds-Pats variable group.
13-
#
14-
# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing
9+
# See example call for this script below.
1510
#
1611
# - task: PowerShell@2
17-
# displayName: Setup Private Feeds Credentials
12+
# displayName: Setup Internal Feeds
1813
# condition: eq(variables['Agent.OS'], 'Windows_NT')
1914
# inputs:
2015
# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
21-
# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
22-
# env:
23-
# Token: $(dn-bot-dnceng-artifact-feeds-rw)
16+
# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config
17+
# - task: NuGetAuthenticate@1
18+
#
19+
# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
20+
# This ensures that:
21+
# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
22+
# - The credential provider is installed
23+
#
24+
# This logic is also abstracted into enable-internal-sources.yml.
2425

2526
[CmdletBinding()]
2627
param (
2728
[Parameter(Mandatory = $true)][string]$ConfigFile,
28-
[Parameter(Mandatory = $true)][string]$Password
29+
[string]$Password
2930
)
3031

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

3536
. $PSScriptRoot\tools.ps1
3637

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+
3748
# Add source entry to PackageSources
38-
function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
49+
function AddPackageSource($sources, $SourceName, $SourceEndPoint, $pwd) {
3950
$packageSource = $sources.SelectSingleNode("add[@key='$SourceName']")
4051

41-
if ($packageSource -eq $null)
52+
if ($null -eq $packageSource)
4253
{
54+
Write-Host "`tAdding package source" $SourceName
4355
$packageSource = $doc.CreateElement("add")
4456
$packageSource.SetAttribute("key", $SourceName)
4557
$packageSource.SetAttribute("value", $SourceEndPoint)
@@ -48,58 +60,34 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern
4860
else {
4961
Write-Host "Package source $SourceName already present."
5062
}
51-
AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd
52-
}
53-
54-
# Add a credential node for the specified source
55-
function AddCredential($creds, $source, $username, $pwd) {
56-
# Looks for credential configuration for the given SourceName. Create it if none is found.
57-
$sourceElement = $creds.SelectSingleNode($Source)
58-
if ($sourceElement -eq $null)
59-
{
60-
$sourceElement = $doc.CreateElement($Source)
61-
$creds.AppendChild($sourceElement) | Out-Null
62-
}
6363

64-
# Add the <Username> node to the credential if none is found.
65-
$usernameElement = $sourceElement.SelectSingleNode("add[@key='Username']")
66-
if ($usernameElement -eq $null)
67-
{
68-
$usernameElement = $doc.CreateElement("add")
69-
$usernameElement.SetAttribute("key", "Username")
70-
$sourceElement.AppendChild($usernameElement) | Out-Null
64+
if ($pwd) {
65+
$feedEndpoints.endpointCredentials = AddCredential -endpointCredentials $feedEndpoints.endpointCredentials -source $SourceEndPoint -pwd $pwd
7166
}
72-
$usernameElement.SetAttribute("value", $Username)
67+
}
7368

74-
# Add the <ClearTextPassword> to the credential if none is found.
75-
# Add it as a clear text because there is no support for encrypted ones in non-windows .Net SDKs.
76-
# -> https://github.com/NuGet/Home/issues/5526
77-
$passwordElement = $sourceElement.SelectSingleNode("add[@key='ClearTextPassword']")
78-
if ($passwordElement -eq $null)
79-
{
80-
$passwordElement = $doc.CreateElement("add")
81-
$passwordElement.SetAttribute("key", "ClearTextPassword")
82-
$sourceElement.AppendChild($passwordElement) | Out-Null
69+
# Add a new feed endpoint credential
70+
function AddCredential([array]$endpointCredentials, $source, $pwd) {
71+
$endpointCredentials += @{
72+
endpoint = $source;
73+
password = $pwd
8374
}
84-
85-
$passwordElement.SetAttribute("value", $pwd)
75+
return $endpointCredentials
8676
}
8777

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

91-
Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds."
92-
93-
ForEach ($PackageSource in $maestroPrivateSources) {
94-
Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key
95-
AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd
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
9684
}
9785
}
9886

99-
function EnablePrivatePackageSources($DisabledPackageSources) {
100-
$maestroPrivateSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
101-
ForEach ($DisabledPackageSource in $maestroPrivateSources) {
102-
Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource"
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"
10391
# Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries
10492
$DisabledPackageSources.RemoveChild($DisabledPackageSource)
10593
}
@@ -110,58 +98,53 @@ if (!(Test-Path $ConfigFile -PathType Leaf)) {
11098
ExitWithExitCode 1
11199
}
112100

113-
if (!$Password) {
114-
Write-PipelineTelemetryError -Category 'Build' -Message 'Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Please supply a valid PAT'
115-
ExitWithExitCode 1
116-
}
117-
118101
# Load NuGet.config
119102
$doc = New-Object System.Xml.XmlDocument
120103
$filename = (Get-Item $ConfigFile).FullName
121104
$doc.Load($filename)
122105

123106
# Get reference to <PackageSources> or create one if none exist already
124107
$sources = $doc.DocumentElement.SelectSingleNode("packageSources")
125-
if ($sources -eq $null) {
108+
if ($null -eq $sources) {
126109
$sources = $doc.CreateElement("packageSources")
127110
$doc.DocumentElement.AppendChild($sources) | Out-Null
128111
}
129112

130-
# Looks for a <PackageSourceCredentials> node. Create it if none is found.
131-
$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials")
132-
if ($creds -eq $null) {
133-
$creds = $doc.CreateElement("packageSourceCredentials")
134-
$doc.DocumentElement.AppendChild($creds) | Out-Null
135-
}
136-
137113
# Check for disabledPackageSources; we'll enable any darc-int ones we find there
138114
$disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources")
139-
if ($disabledSources -ne $null) {
115+
if ($null -ne $disabledSources) {
140116
Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node"
141-
EnablePrivatePackageSources -DisabledPackageSources $disabledSources
117+
EnableInternalPackageSources -DisabledPackageSources $disabledSources
142118
}
143119

144-
$userName = "dn-bot"
145-
146-
# Insert credential nodes for Maestro's private feeds
147-
InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password
120+
if ($Password) {
121+
InsertMaestroInternalFeedCredentials -Sources $sources -pwd $Password
122+
}
148123

149124
# 3.1 uses a different feed url format so it's handled differently here
150125
$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']")
151-
if ($dotnet31Source -ne $null) {
152-
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
153-
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
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
154129
}
155130

156131
$dotnetVersions = @('5','6','7','8')
157132

158133
foreach ($dotnetVersion in $dotnetVersions) {
159134
$feedPrefix = "dotnet" + $dotnetVersion;
160135
$dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']")
161-
if ($dotnetSource -ne $null) {
162-
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
163-
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
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
164139
}
165140
}
166141

167-
$doc.Save($filename)
142+
$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

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
#!/usr/bin/env bash
22

3-
# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds.
4-
# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080
3+
# This script adds internal feeds required to build commits that depend on intenral package sources. For instance,
4+
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
5+
# disabled internal Maestro (darc-int*) feeds.
6+
#
7+
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
58
#
6-
# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry
7-
# under <packageSourceCredentials> for each Maestro's managed private feed. Two additional credential
8-
# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport.
9-
#
10-
# This script needs to be called in every job that will restore packages and which the base repo has
11-
# private AzDO feeds in the NuGet.config.
12-
#
13-
# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)`
14-
# from the AzureDevOps-Artifact-Feeds-Pats variable group.
15-
#
16-
# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing.
9+
# See example call for this script below.
1710
#
1811
# - task: Bash@3
19-
# displayName: Setup Private Feeds Credentials
12+
# displayName: Setup Internal Feeds
2013
# inputs:
2114
# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
22-
# arguments: $(Build.SourcesDirectory)/NuGet.config $Token
15+
# arguments: $(Build.SourcesDirectory)/NuGet.config
2316
# condition: ne(variables['Agent.OS'], 'Windows_NT')
24-
# env:
25-
# Token: $(dn-bot-dnceng-artifact-feeds-rw)
17+
# - task: NuGetAuthenticate@1
18+
#
19+
# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
20+
# This ensures that:
21+
# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
22+
# - The credential provider is installed.
23+
#
24+
# This logic is also abstracted into enable-internal-sources.yml.
2625

2726
ConfigFile=$1
2827
CredToken=$2
@@ -48,11 +47,6 @@ if [ ! -f "$ConfigFile" ]; then
4847
ExitWithExitCode 1
4948
fi
5049

51-
if [ -z "$CredToken" ]; then
52-
Write-PipelineTelemetryError -category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Please supply a valid PAT"
53-
ExitWithExitCode 1
54-
fi
55-
5650
if [[ `uname -s` == "Darwin" ]]; then
5751
NL=$'\\\n'
5852
TB=''
@@ -140,18 +134,20 @@ PackageSources+="$IFS"
140134
PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"')
141135
IFS=$PrevIFS
142136

143-
for FeedName in ${PackageSources[@]} ; do
144-
# Check if there is no existing credential for this FeedName
145-
grep -i "<$FeedName>" $ConfigFile
146-
if [ "$?" != "0" ]; then
147-
echo "Adding credentials for $FeedName."
137+
if [ "$CredToken" ]; then
138+
for FeedName in ${PackageSources[@]} ; do
139+
# Check if there is no existing credential for this FeedName
140+
grep -i "<$FeedName>" $ConfigFile
141+
if [ "$?" != "0" ]; then
142+
echo "Adding credentials for $FeedName."
148143

149-
PackageSourceCredentialsNodeFooter="</packageSourceCredentials>"
150-
NewCredential="${TB}${TB}<$FeedName>${NL}<add key=\"Username\" value=\"dn-bot\" />${NL}<add key=\"ClearTextPassword\" value=\"$CredToken\" />${NL}</$FeedName>"
144+
PackageSourceCredentialsNodeFooter="</packageSourceCredentials>"
145+
NewCredential="${TB}${TB}<$FeedName>${NL}<add key=\"Username\" value=\"dn-bot\" />${NL}<add key=\"ClearTextPassword\" value=\"$CredToken\" />${NL}</$FeedName>"
151146

152-
sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile
153-
fi
154-
done
147+
sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile
148+
fi
149+
done
150+
fi
155151

156152
# Re-enable any entries in disabledPackageSources where the feed name contains darc-int
157153
grep -i "<disabledPackageSources>" $ConfigFile

0 commit comments

Comments
 (0)