11# 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. Similarly,
3- # dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present.
4- # In addition, this script also enables disabled internal Maestro (darc-int*) feeds.
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.
54#
65# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
76#
1211# condition: eq(variables['Agent.OS'], 'Windows_NT')
1312# inputs:
1413# filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
15- # arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
14+ # arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config
1615# env:
17- # Token: $(dn-bot-dnceng-artifact-feeds-rw)
16+ # Token: $(InternalFeedToken)
17+ #
18+ # Note: This logic is abstracted into enable-internal-sources.yml, which uses
19+ # NuGetAuthenticate or a WIF-backed service connection. Prefer that template
20+ # over calling this script directly.
1821#
1922# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
2023# This ensures that:
2629[CmdletBinding ()]
2730param (
2831 [Parameter (Mandatory = $true )][string ]$ConfigFile ,
29- $Password
32+ # Keep the legacy name as an alias while callers migrate secrets to the Token environment variable.
33+ [Alias (" Password" )]$Credential
3034)
3135
3236$ErrorActionPreference = " Stop"
3337Set-StrictMode - Version 2.0
3438[Net.ServicePointManager ]::SecurityProtocol = [Net.SecurityProtocolType ]::Tls12
39+ $feedCredential = if ($env: Token ) { $env: Token } else { $Credential }
40+
41+ # This script only consumes helper functions from tools.ps1 to configure NuGet feeds.
42+ # Skip importing configure-toolset.ps1 so that repo-specific toolset setup (e.g. acquiring
43+ # a bootstrap SDK) is not triggered as a side effect of feed configuration.
44+ $disableConfigureToolsetImport = $true
3545
3646. $PSScriptRoot \tools.ps1
3747
3848# Adds or enables the package source with the given name
39- function AddOrEnablePackageSource ($sources , $disabledPackageSources , $SourceName , $SourceEndPoint , $creds , $Username , $pwd ) {
40- if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource - DisabledPackageSources $disabledPackageSources - Creds $creds - PackageSourceName $SourceName )) {
41- AddPackageSource - Sources $sources - SourceName $SourceName - SourceEndPoint $SourceEndPoint - Creds $creds - Username $userName - pwd $Password
49+ function AddOrEnablePackageSource ($sources , $disabledPackageSources , $SourceName , $SourceEndPoint , $creds , $Username , $credential ) {
50+ if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource - DisabledPackageSources $disabledPackageSources - Creds $creds - PackageSourceName $SourceName - Credential $credential )) {
51+ AddPackageSource - Sources $sources - SourceName $SourceName - SourceEndPoint $SourceEndPoint - Creds $creds - Username $Username - credential $credential
4252 }
4353}
4454
4555# Add source entry to PackageSources
46- function AddPackageSource ($sources , $SourceName , $SourceEndPoint , $creds , $Username , $pwd ) {
56+ function AddPackageSource ($sources , $SourceName , $SourceEndPoint , $creds , $Username , $credential ) {
4757 $packageSource = $sources.SelectSingleNode (" add[@key='$SourceName ']" )
4858
4959 if ($packageSource -eq $null )
@@ -59,13 +69,13 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern
5969 Write-Host " Package source $SourceName already present and enabled."
6070 }
6171
62- AddCredential - Creds $creds - Source $SourceName - Username $Username - pwd $pwd
72+ AddCredential - Creds $creds - Source $SourceName - Username $Username - credential $credential
6373}
6474
6575# Add a credential node for the specified source
66- function AddCredential ($creds , $source , $username , $pwd ) {
76+ function AddCredential ($creds , $source , $username , $credential ) {
6777 # If no cred supplied, don't do anything.
68- if (! $pwd ) {
78+ if (! $credential ) {
6979 return ;
7080 }
7181
@@ -100,27 +110,27 @@ function AddCredential($creds, $source, $username, $pwd) {
100110 $sourceElement.AppendChild ($passwordElement ) | Out-Null
101111 }
102112
103- $passwordElement.SetAttribute (" value" , $pwd )
113+ $passwordElement.SetAttribute (" value" , $credential )
104114}
105115
106116# Enable all darc-int package sources.
107- function EnableMaestroInternalPackageSources ($DisabledPackageSources , $Creds ) {
117+ function EnableMaestroInternalPackageSources ($DisabledPackageSources , $Creds , $Credential ) {
108118 $maestroInternalSources = $DisabledPackageSources.SelectNodes (" add[contains(@key,'darc-int')]" )
109119 ForEach ($DisabledPackageSource in $maestroInternalSources ) {
110- EnableInternalPackageSource - DisabledPackageSources $DisabledPackageSources - Creds $Creds - PackageSourceName $DisabledPackageSource.key
120+ EnableInternalPackageSource - DisabledPackageSources $DisabledPackageSources - Creds $Creds - PackageSourceName $DisabledPackageSource.key - Credential $Credential
111121 }
112122}
113123
114124# Enables an internal package source by name, if found. Returns true if the package source was found and enabled, false otherwise.
115- function EnableInternalPackageSource ($DisabledPackageSources , $Creds , $PackageSourceName ) {
125+ function EnableInternalPackageSource ($DisabledPackageSources , $Creds , $PackageSourceName , $Credential ) {
116126 $DisabledPackageSource = $DisabledPackageSources.SelectSingleNode (" add[@key='$PackageSourceName ']" )
117127 if ($DisabledPackageSource ) {
118128 Write-Host " Enabling internal source '$ ( $DisabledPackageSource.key ) '."
119129
120130 # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries
121131 $DisabledPackageSources.RemoveChild ($DisabledPackageSource )
122132
123- AddCredential - Creds $creds - Source $DisabledPackageSource.Key - Username $userName - pwd $Password
133+ AddCredential - Creds $creds - Source $DisabledPackageSource.Key - Username $userName - credential $credential
124134 return $true
125135 }
126136 return $false
@@ -145,7 +155,7 @@ if ($sources -eq $null) {
145155
146156$creds = $null
147157$feedSuffix = " v3/index.json"
148- if ($Password ) {
158+ if ($feedCredential ) {
149159 $feedSuffix = " v2"
150160 # Looks for a <PackageSourceCredentials> node. Create it if none is found.
151161 $creds = $doc.DocumentElement.SelectSingleNode (" packageSourceCredentials" )
@@ -161,29 +171,17 @@ $userName = "dn-bot"
161171$disabledSources = $doc.DocumentElement.SelectSingleNode (" disabledPackageSources" )
162172if ($disabledSources -ne $null ) {
163173 Write-Host " Checking for any darc-int disabled package sources in the disabledPackageSources node"
164- EnableMaestroInternalPackageSources - DisabledPackageSources $disabledSources - Creds $creds
174+ EnableMaestroInternalPackageSources - DisabledPackageSources $disabledSources - Creds $creds - Credential $feedCredential
165175}
166- $dotnetVersions = @ (' 5' , ' 6' , ' 7' , ' 8' , ' 9' , ' 10' )
176+ $dotnetVersions = @ (' 5' , ' 6' , ' 7' , ' 8' , ' 9' , ' 10' , ' 11 ' )
167177
168178foreach ($dotnetVersion in $dotnetVersions ) {
169179 $feedPrefix = " dotnet" + $dotnetVersion ;
170180 $dotnetSource = $sources.SelectSingleNode (" add[@key='$feedPrefix ']" )
171181 if ($dotnetSource -ne $null ) {
172- AddOrEnablePackageSource - Sources $sources - DisabledPackageSources $disabledSources - SourceName " $feedPrefix -internal" - SourceEndPoint " https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix -internal/nuget/$feedSuffix " - Creds $creds - Username $userName - pwd $Password
173- AddOrEnablePackageSource - Sources $sources - DisabledPackageSources $disabledSources - SourceName " $feedPrefix -internal-transport" - SourceEndPoint " https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix -internal-transport/nuget/$feedSuffix " - Creds $creds - Username $userName - pwd $Password
182+ AddOrEnablePackageSource - Sources $sources - DisabledPackageSources $disabledSources - SourceName " $feedPrefix -internal" - SourceEndPoint " https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix -internal/nuget/$feedSuffix " - Creds $creds - Username $userName - credential $feedCredential
183+ AddOrEnablePackageSource - Sources $sources - DisabledPackageSources $disabledSources - SourceName " $feedPrefix -internal-transport" - SourceEndPoint " https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix -internal-transport/nuget/$feedSuffix " - Creds $creds - Username $userName - credential $feedCredential
174184 }
175185}
176186
177- # Check for dotnet-eng and add dotnet-eng-internal if present
178- $dotnetEngSource = $sources.SelectSingleNode (" add[@key='dotnet-eng']" )
179- if ($dotnetEngSource -ne $null ) {
180- AddOrEnablePackageSource - Sources $sources - DisabledPackageSources $disabledSources - SourceName " dotnet-eng-internal" - SourceEndPoint " https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$feedSuffix " - Creds $creds - Username $userName - pwd $Password
181- }
182-
183- # Check for dotnet-tools and add dotnet-tools-internal if present
184- $dotnetToolsSource = $sources.SelectSingleNode (" add[@key='dotnet-tools']" )
185- if ($dotnetToolsSource -ne $null ) {
186- AddOrEnablePackageSource - Sources $sources - DisabledPackageSources $disabledSources - SourceName " dotnet-tools-internal" - SourceEndPoint " https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$feedSuffix " - Creds $creds - Username $userName - pwd $Password
187- }
188-
189187$doc.Save ($filename )
0 commit comments