diff --git a/eng/Version.Details.props b/eng/Version.Details.props index 4dff76f9d180..66c127ca90f2 100644 --- a/eng/Version.Details.props +++ b/eng/Version.Details.props @@ -11,131 +11,131 @@ This file should be imported by eng/Versions.props 11.0.0-preview.5.26272.112 11.0.0-preview.5.26272.112 11.0.0-preview.5.26272.112 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.1.0-preview.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 18.11.0-1.26410.101 - 18.11.0-1.26410.101 - 7.11.0-rc.41101 - 18.11.0-1.26410.101 - 11.0.100-rc.1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 11.1.0-preview.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 2.0.0-preview.1.26410.101 - 3.0.0-rc.1.26410.101 - 11.0.0-beta.26410.101 - 11.0.0-beta.26410.101 - 11.0.0-beta.26410.101 - 11.0.0-beta.26410.101 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.1.0-preview.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 18.12.0-1.26426.126 + 18.12.0-1.26426.126 + 7.11.0-rc.42726 + 18.12.0-1.26426.126 + 11.0.100-rc.2.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 11.1.0-preview.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 2.0.0-preview.1.26426.126 + 3.0.0-rc.2.26426.126 + 11.0.0-beta.26426.126 + 11.0.0-beta.26426.126 + 11.0.0-beta.26426.126 + 11.0.0-beta.26426.126 11.0.0-beta.26427.10 - 11.0.0-beta.26410.101 - 11.0.0-beta.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-beta.26410.101 - 11.0.0-beta.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 15.2.101-rc1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 5.11.0-1.26410.101 - 5.11.0-1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-preview.7.26360.111 - 11.1.0-preview.26410.101 - 11.0.0-rc.1.26410.101 - 18.11.0-preview-26410-101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.100-rc.1.26410.101 - 11.0.100-rc.1.26410.101 - 11.0.100-rc.1.26410.101 - 11.0.100-rc.1.26410.101 - 11.0.100-rc.1.26410.101 - 18.11.0-preview-26410-101 - 18.11.0-preview-26410-101 - 3.3.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 7.11.0-rc.41101 - 11.0.0-rc.1.26410.101 - 3.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 - 11.0.0-rc.1.26410.101 + 11.0.0-beta.26426.126 + 11.0.0-beta.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-beta.26426.126 + 11.0.0-beta.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 15.2.101-rc2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 5.12.0-1.26426.126 + 5.12.0-1.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.1.0-preview.26426.126 + 11.0.0-rc.2.26426.126 + 18.11.0-release-26426-126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.100-rc.2.26426.126 + 11.0.100-rc.2.26426.126 + 11.0.100-rc.2.26426.126 + 11.0.100-rc.2.26426.126 + 11.0.100-rc.2.26426.126 + 18.11.0-release-26426-126 + 18.11.0-release-26426-126 + 3.3.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 7.11.0-rc.42726 + 11.0.0-rc.2.26426.126 + 3.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 + 11.0.0-rc.2.26426.126 2.4.0-preview.26418.7 2.3.0-preview.26330.8 @@ -220,7 +220,7 @@ This file should be imported by eng/Versions.props $(MicrosoftNetCompilersToolsetFrameworkPackageVersion) $(MicrosoftNETHostModelPackageVersion) $(MicrosoftNETILLinkTasksPackageVersion) - $(MicrosoftNETRuntimeEmscripten506Cachewinx64PackageVersion) + $(MicrosoftNETRuntimeEmscriptenInternalPackageVersion) $(MicrosoftNETSdkRazorSourceGeneratorsTransportPackageVersion) $(MicrosoftNETSdkWindowsDesktopPackageVersion) $(MicrosoftNETTestSdkPackageVersion) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 98c3c0929473..4b0ba8a32b32 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,26 +1,26 @@ - + - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 @@ -28,174 +28,174 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 https://github.com/dotnet/dotnet @@ -242,304 +242,304 @@ https://github.com/dotnet/dotnet 85ca690954a6f5e988d523dec249b57b84d1ad0d - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 50dbab4de210e882172b07934e9666313b7065f1 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 https://github.com/dotnet/arcade 2cdfe99944d984749c8bdfc7d8d6a2589ed15d6d - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 - + https://github.com/dotnet/dotnet - 64a29867c5c5c8e0babc9e31313cf3b6e50f0193 + 100002779ceec649fcfd00c233f673b494130827 diff --git a/eng/common/Get-GitHubAppToken.ps1 b/eng/common/Get-GitHubAppToken.ps1 index 6b5899d7a299..9c7e3dcd6ac4 100644 --- a/eng/common/Get-GitHubAppToken.ps1 +++ b/eng/common/Get-GitHubAppToken.ps1 @@ -113,10 +113,13 @@ try { $installations = @() $page = 1 do { - $pageInstallations = @(Invoke-RestMethod ` + # Assign the response before wrapping it in @(). PowerShell otherwise + # preserves a top-level JSON array as one nested pipeline object. + $pageResponse = Invoke-RestMethod ` -Uri "https://api.github.com/app/installations?per_page=100&page=$page" ` -Headers $headers ` - -Method Get) + -Method Get + $pageInstallations = @($pageResponse) $installations += $pageInstallations $page++ } while ($pageInstallations.Count -eq 100) @@ -125,12 +128,19 @@ catch { Write-PipelineTelemetryError -Category 'Build' -Message "Failed to list GitHub App installations: $_. The signed JWT may be invalid or the App's Client ID ('$AppClientId') may be incorrect." exit 1 } -$installation = $installations | Where-Object { $_.account.login -ieq $InstallationOwner } | Select-Object -First 1 -if (-not $installation) { +$matchingInstallations = @($installations | Where-Object { $_.account.login -ieq $InstallationOwner }) +if ($matchingInstallations.Count -eq 0) { $found = ($installations | ForEach-Object { $_.account.login }) -join ', ' Write-PipelineTelemetryError -Category 'Build' -Message "No installation found for '$InstallationOwner'. App is installed on: $found" exit 1 } +if ($matchingInstallations.Count -ne 1) { + $matchingIds = ($matchingInstallations | ForEach-Object { $_.id }) -join ', ' + Write-PipelineTelemetryError -Category 'Build' -Message "Found multiple installations for '$InstallationOwner': $matchingIds" + exit 1 +} +$installation = $matchingInstallations[0] +Write-Host "Using installation $($installation.id) for '$($installation.account.login)'." try { $tokenResponse = Invoke-RestMethod ` diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index b3bddff355e7..b7a3769364dd 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -11,7 +11,7 @@ # condition: eq(variables['Agent.OS'], 'Windows_NT') # inputs: # filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 -# arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token +# arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config # env: # Token: $(InternalFeedToken) # @@ -29,12 +29,14 @@ [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string]$ConfigFile, - $Password + # Keep the legacy name as an alias while callers migrate secrets to the Token environment variable. + [Alias("Password")]$Credential ) $ErrorActionPreference = "Stop" Set-StrictMode -Version 2.0 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$feedCredential = if ($env:Token) { $env:Token } else { $Credential } # This script only consumes helper functions from tools.ps1 to configure NuGet feeds. # Skip importing configure-toolset.ps1 so that repo-specific toolset setup (e.g. acquiring @@ -44,14 +46,14 @@ $disableConfigureToolsetImport = $true . $PSScriptRoot\tools.ps1 # Adds or enables the package source with the given name -function AddOrEnablePackageSource($sources, $disabledPackageSources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) { - if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource -DisabledPackageSources $disabledPackageSources -Creds $creds -PackageSourceName $SourceName)) { - AddPackageSource -Sources $sources -SourceName $SourceName -SourceEndPoint $SourceEndPoint -Creds $creds -Username $userName -pwd $Password +function AddOrEnablePackageSource($sources, $disabledPackageSources, $SourceName, $SourceEndPoint, $creds, $Username, $credential) { + if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource -DisabledPackageSources $disabledPackageSources -Creds $creds -PackageSourceName $SourceName -Credential $credential)) { + AddPackageSource -Sources $sources -SourceName $SourceName -SourceEndPoint $SourceEndPoint -Creds $creds -Username $Username -credential $credential } } # Add source entry to PackageSources -function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) { +function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $credential) { $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']") if ($packageSource -eq $null) @@ -67,13 +69,13 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern Write-Host "Package source $SourceName already present and enabled." } - AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd + AddCredential -Creds $creds -Source $SourceName -Username $Username -credential $credential } # Add a credential node for the specified source -function AddCredential($creds, $source, $username, $pwd) { +function AddCredential($creds, $source, $username, $credential) { # If no cred supplied, don't do anything. - if (!$pwd) { + if (!$credential) { return; } @@ -108,19 +110,19 @@ function AddCredential($creds, $source, $username, $pwd) { $sourceElement.AppendChild($passwordElement) | Out-Null } - $passwordElement.SetAttribute("value", $pwd) + $passwordElement.SetAttribute("value", $credential) } # Enable all darc-int package sources. -function EnableMaestroInternalPackageSources($DisabledPackageSources, $Creds) { +function EnableMaestroInternalPackageSources($DisabledPackageSources, $Creds, $Credential) { $maestroInternalSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]") ForEach ($DisabledPackageSource in $maestroInternalSources) { - EnableInternalPackageSource -DisabledPackageSources $DisabledPackageSources -Creds $Creds -PackageSourceName $DisabledPackageSource.key + EnableInternalPackageSource -DisabledPackageSources $DisabledPackageSources -Creds $Creds -PackageSourceName $DisabledPackageSource.key -Credential $Credential } } # Enables an internal package source by name, if found. Returns true if the package source was found and enabled, false otherwise. -function EnableInternalPackageSource($DisabledPackageSources, $Creds, $PackageSourceName) { +function EnableInternalPackageSource($DisabledPackageSources, $Creds, $PackageSourceName, $Credential) { $DisabledPackageSource = $DisabledPackageSources.SelectSingleNode("add[@key='$PackageSourceName']") if ($DisabledPackageSource) { Write-Host "Enabling internal source '$($DisabledPackageSource.key)'." @@ -128,7 +130,7 @@ function EnableInternalPackageSource($DisabledPackageSources, $Creds, $PackageSo # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries $DisabledPackageSources.RemoveChild($DisabledPackageSource) - AddCredential -Creds $creds -Source $DisabledPackageSource.Key -Username $userName -pwd $Password + AddCredential -Creds $creds -Source $DisabledPackageSource.Key -Username $userName -credential $credential return $true } return $false @@ -153,7 +155,7 @@ if ($sources -eq $null) { $creds = $null $feedSuffix = "v3/index.json" -if ($Password) { +if ($feedCredential) { $feedSuffix = "v2" # Looks for a node. Create it if none is found. $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") @@ -169,7 +171,7 @@ $userName = "dn-bot" $disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources") if ($disabledSources -ne $null) { Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node" - EnableMaestroInternalPackageSources -DisabledPackageSources $disabledSources -Creds $creds + EnableMaestroInternalPackageSources -DisabledPackageSources $disabledSources -Creds $creds -Credential $feedCredential } $dotnetVersions = @('5','6','7','8','9','10') @@ -177,8 +179,8 @@ foreach ($dotnetVersion in $dotnetVersions) { $feedPrefix = "dotnet" + $dotnetVersion; $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']") if ($dotnetSource -ne $null) { - 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 - 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 + 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 + 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 } } diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh index 67e7e0942ca1..c3ae8ac054fe 100755 --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -24,7 +24,9 @@ # This logic is also abstracted into enable-internal-sources.yml. ConfigFile=$1 -CredToken=$2 +# Prefer the environment variable so credentials do not appear in process arguments. +# Retain the positional argument as a compatibility fallback for existing callers. +CredToken=${Token:-$2} NL='\n' TB=' ' diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index dd84699f500c..fee2f839919a 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -8,6 +8,7 @@ Param( [bool] $warnAsError = $true, [string] $warnNotAsError = '', [bool] $nodeReuse = $true, + [bool][Alias('mt')]$msbuildMultiThreaded = $false, [switch] $buildCheck = $false, [switch][Alias('r')]$restore, [switch] $deployDeps, @@ -79,6 +80,7 @@ function Print-Usage() { Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio" Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)" Write-Host " -nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')" + Write-Host " -msbuildMultiThreaded Sets MSBuild's multi-threaded mode, i.e. the -mt switch ('1' or '0') (short: -mt)" Write-Host " -buildCheck Sets /check msbuild parameter" Write-Host " -fromVMR Set when building from within the VMR" Write-Host " -disablePipelineSetResult Set to disable masking the actual exit code in the pipeline when the build fails" @@ -175,9 +177,8 @@ try { if (-not $excludeCIBinarylog) { $binaryLog = $true } - # Disable node reuse on CI unless explicitly opted in via MSBUILD_NODEREUSE_ENABLED. - # Internal testing only; this env var will be replaced with a switch (https://github.com/dotnet/arcade/issues/17013) and must not be depended on. - if ($env:MSBUILD_NODEREUSE_ENABLED -ne "1") { + # Node reuse isn't used on CI unless it was explicitly requested via -nodeReuse. + if (-not $PSBoundParameters.ContainsKey('nodeReuse')) { $nodeReuse = $false } } diff --git a/eng/common/build.sh b/eng/common/build.sh index e37edd6cff34..109d83ff73f7 100755 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -43,6 +43,7 @@ usage() echo " --pipelinesLog Promote msbuild errors/warnings to Azure Pipelines timeline issues; defaults to on in CI (short: -pl)" echo " --prepareMachine Prepare machine for CI run, clean up processes after build" echo " --nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')" + echo " --msbuildMultiThreaded Sets MSBuild's multi-threaded mode, i.e. the -mt switch ('true' or 'false') (short: --mt)" echo " --warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" echo " --warnNotAsError Sets a semi-colon delimited list of warning codes that should not be treated as errors" echo " --buildCheck Sets /check msbuild parameter" @@ -84,7 +85,9 @@ clean=false warn_as_error=true warn_not_as_error='' -node_reuse=true +# Empty means "not specified"; tools.sh defaults these to on for local builds and off on CI. +node_reuse='' +msbuild_multi_threaded='' build_check=false binary_log=false binary_log_name='' @@ -199,6 +202,10 @@ while [[ $# -gt 0 ]]; do node_reuse=$2 shift ;; + -msbuildmultithreaded|-mt) + msbuild_multi_threaded=$2 + shift + ;; -buildcheck) build_check=true ;; @@ -224,11 +231,6 @@ fi if [[ "$ci" == true ]]; then pipelines_log=true - # Disable node reuse on CI unless explicitly opted in via MSBUILD_NODEREUSE_ENABLED. - # Internal testing only; this env var will be replaced with a switch (https://github.com/dotnet/arcade/issues/17013) and must not be depended on. - if [[ "${MSBUILD_NODEREUSE_ENABLED:-}" != "1" ]]; then - node_reuse=false - fi if [[ "$exclude_ci_binary_log" == false ]]; then binary_log=true fi diff --git a/eng/common/core-templates/job/helix-job-monitor.yml b/eng/common/core-templates/job/helix-job-monitor.yml index a65b50d0a787..81ecccdd17bd 100644 --- a/eng/common/core-templates/job/helix-job-monitor.yml +++ b/eng/common/core-templates/job/helix-job-monitor.yml @@ -84,6 +84,15 @@ parameters: type: boolean default: false +# Controls per-test output attachments. Defaults to Failed. +- name: testResultAttachmentMode + type: string + default: Failed + values: + - Failed + - All + - None + # Advanced: optional pipeline artifact (produced earlier in this run) that contains the tool # nupkg. When set, the artifact is downloaded and the tool is installed from the nupkg into # a local tool-path; this bypasses the repo's .config/dotnet-tools.json manifest and is @@ -210,6 +219,7 @@ jobs: organization='${{ parameters.organization }}' repository='${{ parameters.repository }}' + testResultAttachmentMode='${{ parameters.testResultAttachmentMode }}' # Fall back to Azure DevOps-provided environment variables when the caller did not # supply organization / repository explicitly. BUILD_REPOSITORY_NAME is typically @@ -232,6 +242,9 @@ jobs: if [ -n "$organization" ]; then toolArgs+=( --organization "$organization" ); fi if [ -n "$repository" ]; then toolArgs+=( --repository "$repository" ); fi + if [ -n "$testResultAttachmentMode" ]; then + toolArgs+=( --test-result-attachment-mode "$testResultAttachmentMode" ) + fi # Build.Reason and Build.SourceBranch are required to derive the Helix source filter # the same way the Helix SDK submitter does (PR -> 'pr', internal -> 'official', diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml index 4f5653d73ac7..ce077368e40d 100644 --- a/eng/common/core-templates/job/onelocbuild.yml +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -14,10 +14,11 @@ parameters: # exist, and any pipeline that sets this to '' fall back to PAT-based auth via the CeapexPat parameter. CeapexServiceConnection: 'dnceng-onelocbuild-ceapex' - # GitHub App authentication for the OneLoc check-in PR (dnceng/internal only). - # The infrastructure identifiers are centralized here and the App path is enabled by default. - # DevDiv requires its own project-scoped service connection before this path can be enabled there. + # GitHub App authentication for the OneLoc check-in PR. + # dnceng/internal and DevDiv/DevDiv are enabled by default with their project-scoped service + # connections. Other projects must explicitly opt in after provisioning equivalent infrastructure. UseGitHubAppAuthentication: true + UseGitHubAppAuthenticationInOtherProjects: false GitHubAppServiceConnection: 'dnceng-oneloc-githubapp' GitHubAppClientId: 'Iv23lijBU8x3gc9lDOc9' GitHubAppKeyVaultName: 'EngKeyVault' @@ -98,13 +99,16 @@ jobs: outputVariableName: 'CeapexEntraToken' condition: ${{ parameters.condition }} - # Mint a short-lived GitHub App installation token for the loc check-in PR (dnceng/internal only). - # All other projects fall back to PAT-based auth, since the app service connection is scoped to dnceng/internal. - - ${{ if and(eq(parameters.RepoType, 'gitHub'), eq(parameters.UseGitHubAppAuthentication, true), eq(variables['System.TeamProject'], 'internal')) }}: + # Mint a short-lived GitHub App installation token for the loc check-in PR. Use the connection + # provisioned in each supported project; other projects must explicitly opt in and override it. + - ${{ if and(eq(parameters.RepoType, 'gitHub'), eq(parameters.UseGitHubAppAuthentication, true), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.UseGitHubAppAuthenticationInOtherProjects, true))) }}: - template: /eng/common/core-templates/steps/get-github-app-token.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} - azureSubscription: ${{ parameters.GitHubAppServiceConnection }} + ${{ if and(eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.GitHubAppServiceConnection, 'dnceng-oneloc-githubapp')) }}: + azureSubscription: 'devdiv-oneloc-githubapp' + ${{ else }}: + azureSubscription: ${{ parameters.GitHubAppServiceConnection }} keyVaultName: ${{ parameters.GitHubAppKeyVaultName }} keyName: ${{ parameters.GitHubAppKeyName }} appClientId: ${{ parameters.GitHubAppClientId }} @@ -133,9 +137,9 @@ jobs: patVariable: ${{ parameters.CeapexPat }} ${{ if eq(parameters.RepoType, 'gitHub') }}: repoType: ${{ parameters.RepoType }} - ${{ if and(eq(parameters.UseGitHubAppAuthentication, true), eq(variables['System.TeamProject'], 'internal')) }}: + ${{ if and(eq(parameters.UseGitHubAppAuthentication, true), or(eq(variables['System.TeamProject'], 'internal'), eq(variables['System.TeamProject'], 'DevDiv'), eq(parameters.UseGitHubAppAuthenticationInOtherProjects, true))) }}: gitHubPatVariable: "$(GitHubAppInstallationToken)" - ${{ if or(eq(parameters.UseGitHubAppAuthentication, false), ne(variables['System.TeamProject'], 'internal')) }}: + ${{ else }}: gitHubPatVariable: "${{ parameters.GithubPat }}" ${{ if ne(parameters.MirrorRepo, '') }}: isMirrorRepoSelected: true diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 9d951352696e..6dcee6664d68 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -236,6 +236,7 @@ stages: StageLabel: 'Validation' JobLabel: 'Signing' BinlogToolVersion: $(BinlogToolVersion) + enableInternalRuntimes: false # SourceLink validation has been removed — the underlying CLI tool # (targeting netcoreapp2.1) has not functioned for years. diff --git a/eng/common/core-templates/steps/enable-internal-sources.yml b/eng/common/core-templates/steps/enable-internal-sources.yml index 51af9a017091..843cdff7821e 100644 --- a/eng/common/core-templates/steps/enable-internal-sources.yml +++ b/eng/common/core-templates/steps/enable-internal-sources.yml @@ -19,7 +19,7 @@ steps: displayName: Setup Internal Feeds inputs: filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 - arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config env: Token: ${{ parameters.legacyCredential }} - task: Bash@3 @@ -28,7 +28,7 @@ steps: inputs: targetType: inline script: | - "$(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh" "$(System.DefaultWorkingDirectory)/NuGet.config" "$Token" + "$(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh" "$(System.DefaultWorkingDirectory)/NuGet.config" env: Token: ${{ parameters.legacyCredential }} # If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate. @@ -58,13 +58,17 @@ steps: displayName: Setup Internal Feeds inputs: filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 - arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token) + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config + env: + Token: $(dnceng-artifacts-feeds-read-access-token) - task: Bash@3 condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT')) displayName: Setup Internal Feeds inputs: filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh - arguments: $(System.DefaultWorkingDirectory)/NuGet.config $(dnceng-artifacts-feeds-read-access-token) + arguments: $(System.DefaultWorkingDirectory)/NuGet.config + env: + Token: $(dnceng-artifacts-feeds-read-access-token) # This is required in certain scenarios to install the ADO credential provider. # It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others # (e.g. dotnet msbuild). diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml index 2c1e0ab11620..244fef0890e9 100644 --- a/eng/common/core-templates/steps/publish-logs.yml +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -5,6 +5,7 @@ parameters: # A default - in case value from eng/common/core-templates/post-build/common-variables.yml is not passed BinlogToolVersion: '1.0.11' is1ESPipeline: false + enableInternalRuntimes: true steps: - task: Powershell@2 @@ -25,13 +26,20 @@ steps: # Sensitive data can as well be added to $(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' # If the file exists - sensitive data for redaction will be sourced from it # (single entry per line, lines starting with '# ' are considered comments and skipped) - arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' - -BinlogToolVersion '${{parameters.BinlogToolVersion}}' - -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' - -runtimeSourceFeed https://ci.dot.net/internal - -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)' - '$(System.AccessToken)' - ${{parameters.CustomSensitiveDataList}} + ${{ if and(eq(parameters.enableInternalRuntimes, true), ne(variables['System.TeamProject'], 'public')) }}: + arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' + -BinlogToolVersion '${{parameters.BinlogToolVersion}}' + -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' + -runtimeSourceFeed https://ci.dot.net/internal + -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)' + '$(System.AccessToken)' + ${{parameters.CustomSensitiveDataList}} + ${{ else }}: + arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' + -BinlogToolVersion '${{parameters.BinlogToolVersion}}' + -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' + '$(System.AccessToken)' + ${{parameters.CustomSensitiveDataList}} continueOnError: true condition: always() diff --git a/eng/common/msbuild.ps1 b/eng/common/msbuild.ps1 index 495d533a9098..b6dfb570ea50 100644 --- a/eng/common/msbuild.ps1 +++ b/eng/common/msbuild.ps1 @@ -3,6 +3,7 @@ Param( [string] $verbosity = 'minimal', [bool] $warnAsError = $true, [bool] $nodeReuse = $true, + [bool][Alias('mt')]$msbuildMultiThreaded = $false, [switch] $ci, [switch] $prepareMachine, [switch] $excludePrereleaseVS, @@ -13,12 +14,9 @@ Param( . $PSScriptRoot\tools.ps1 try { - if ($ci) { - # Disable node reuse on CI unless explicitly opted in via MSBUILD_NODEREUSE_ENABLED. - # Internal testing only; this env var will be replaced with a switch (https://github.com/dotnet/arcade/issues/17013) and must not be depended on. - if ($env:MSBUILD_NODEREUSE_ENABLED -ne "1") { - $nodeReuse = $false - } + # Node reuse isn't used on CI unless it was explicitly requested via -nodeReuse. + if ($ci -and -not $PSBoundParameters.ContainsKey('nodeReuse')) { + $nodeReuse = $false } MSBuild @extraArgs diff --git a/eng/common/msbuild.sh b/eng/common/msbuild.sh index 333be3232fcf..a40c101237b1 100755 --- a/eng/common/msbuild.sh +++ b/eng/common/msbuild.sh @@ -14,7 +14,9 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" verbosity='minimal' warn_as_error=true -node_reuse=true +# Empty means "not specified"; tools.sh defaults these to on for local builds and off on CI. +node_reuse='' +msbuild_multi_threaded='' prepare_machine=false extra_args='' @@ -33,6 +35,10 @@ while (($# > 0)); do node_reuse=$2 shift 2 ;; + --msbuildmultithreaded|--mt) + msbuild_multi_threaded=$2 + shift 2 + ;; --ci) ci=true shift 1 @@ -50,13 +56,5 @@ done . "$scriptroot/tools.sh" -if [[ "$ci" == true ]]; then - # Disable node reuse on CI unless explicitly opted in via MSBUILD_NODEREUSE_ENABLED. - # Internal testing only; this env var will be replaced with a switch (https://github.com/dotnet/arcade/issues/17013) and must not be depended on. - if [[ "${MSBUILD_NODEREUSE_ENABLED:-}" != "1" ]]; then - node_reuse=false - fi -fi - MSBuild $extra_args ExitWithExitCode 0 diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index da07386ff1fe..e84033dad90c 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -31,11 +31,16 @@ # Set to true to reuse msbuild nodes. Recommended to not reuse on CI. [bool]$nodeReuse = if (Test-Path variable:nodeReuse) { $nodeReuse } else { !$ci } +# Set to true to build with MSBuild's multi-threaded mode (-mt). Opt-in for now, so off unless it was +# explicitly requested. It's intended to become the default for local builds once it has proven out. +[bool]$msbuildMultiThreaded = if (Test-Path variable:msbuildMultiThreaded) { $msbuildMultiThreaded } else { $false } + # Configures warning treatment in msbuild. [bool]$warnAsError = if (Test-Path variable:warnAsError) { $warnAsError } else { $true } # Specifies semi-colon delimited list of warning codes that should not be treated as errors. -[string]$warnNotAsError = if (Test-Path variable:warnNotAsError) { $warnNotAsError } else { '' } +# Defaults to NuGet Audit warning codes NU1901-NU1904. +[string]$warnNotAsError = if ((Test-Path variable:warnNotAsError) -and $warnNotAsError) { $warnNotAsError } else { 'NU1901;NU1902;NU1903;NU1904' } # Specifies which msbuild engine to use for build: 'vs', 'dotnet' or unspecified (determined based on presence of tools.vs in global.json). [string]$msbuildEngine = if (Test-Path variable:msbuildEngine) { $msbuildEngine } else { $null } @@ -808,8 +813,8 @@ function MSBuild() { $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse /p:ContinuousIntegrationBuild=$ci" - # Add -mt flag for MSBuild multithreaded mode if enabled via environment variable - if ($env:MSBUILD_MT_ENABLED -eq "1") { + # Build with MSBuild's multi-threaded mode. + if ($msbuildMultiThreaded) { $cmdArgs += ' -mt' } diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 20f791c11dee..4d14b100b063 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -1,5 +1,15 @@ #!/usr/bin/env bash +# Normalizes the value of a boolean build argument. Accepts 1/0 in addition to true/false so that +# the same value works with the PowerShell scripts, whose [bool] parameters only bind 1/0. +function NormalizeBoolArg { + case "${1:-}" in + 1) echo true ;; + 0) echo false ;; + *) echo "${1:-}" ;; + esac +} + # Initialize variables if they aren't already defined. # CI mode - set to true on CI server for PR validation build or official build. @@ -43,17 +53,25 @@ restore=${restore:-true} verbosity=${verbosity:-'minimal'} # Set to true to reuse msbuild nodes. Recommended to not reuse on CI. +node_reuse=$(NormalizeBoolArg "${node_reuse:-}") if [[ "$ci" == true ]]; then node_reuse=${node_reuse:-false} else node_reuse=${node_reuse:-true} fi +# Set to true to build with MSBuild's multi-threaded mode (-mt). Opt-in for now, so off unless it was +# explicitly requested. It's intended to become the default for local builds once it has proven out. +msbuild_multi_threaded=$(NormalizeBoolArg "${msbuild_multi_threaded:-}") +msbuild_multi_threaded=${msbuild_multi_threaded:-false} + # Configures warning treatment in msbuild. +warn_as_error=$(NormalizeBoolArg "${warn_as_error:-}") warn_as_error=${warn_as_error:-true} # Specifies semi-colon delimited list of warning codes that should not be treated as errors. -warn_not_as_error=${warn_not_as_error:-''} +# Defaults to NuGet Audit warning codes NU1901-NU1904. +warn_not_as_error="${warn_not_as_error:-NU1901;NU1902;NU1903;NU1904}" # True to attempt using .NET Core already that meets requirements specified in global.json # installed on the machine instead of downloading one. @@ -587,9 +605,9 @@ function MSBuild { } } - # Add -mt flag for MSBuild multithreaded mode if enabled via environment variable + # Build with MSBuild's multi-threaded mode. local mt_switch="" - if [[ "${MSBUILD_MT_ENABLED:-}" == "1" ]]; then + if [[ "$msbuild_multi_threaded" == true ]]; then mt_switch="-mt" fi diff --git a/global.json b/global.json index bff679303652..8ea2731bbec1 100644 --- a/global.json +++ b/global.json @@ -5,12 +5,12 @@ "$host$" ], "errorMessage": "The .NET SDK is not installed or is not configured correctly. Please run ./build to install the correct SDK version locally.", - "version": "11.0.100-preview.6.26359.118", + "version": "11.0.100-rc.1.26420.103", "allowPrerelease": true, "rollForward": "latestFeature" }, "tools": { - "dotnet": "11.0.100-preview.6.26359.118", + "dotnet": "11.0.100-rc.1.26420.103", "runtimes": { "dotnet": [ "$(MicrosoftNETCorePlatformsPackageVersion)" @@ -27,8 +27,8 @@ "runner": "Microsoft.Testing.Platform" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26410.101", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26410.101", + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26426.126", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26426.126", "Microsoft.Build.NoTargets": "3.7.134", "Microsoft.Build.Traversal": "4.1.82", "Microsoft.WixToolset.Sdk": "6.0.3-dotnet.6", diff --git a/src/Cli/dotnet/Commands/Run/CSharpCompilerCommand.Generated.cs b/src/Cli/dotnet/Commands/Run/CSharpCompilerCommand.Generated.cs index 19d768d4f347..6fedfd39b6ac 100644 --- a/src/Cli/dotnet/Commands/Run/CSharpCompilerCommand.Generated.cs +++ b/src/Cli/dotnet/Commands/Run/CSharpCompilerCommand.Generated.cs @@ -35,7 +35,7 @@ .. GetFrameworkReferenceArguments(), "/warnaserror-", "/utf8output", "/deterministic+", - "/langversion:14.0", + "/langversion:15.0", "/features:FileBasedProgram", $"/analyzerconfig:{SdkPath}/Sdks/Microsoft.NET.Sdk/codestyle/cs/build/config/analysislevelstyle_default.globalconfig", $"/analyzerconfig:{objDir}/{FileName}.GeneratedMSBuildEditorConfig.editorconfig", diff --git a/src/RazorSdk/Tool/Json/ObjectReaders_TagHelpers.cs b/src/RazorSdk/Tool/Json/ObjectReaders_TagHelpers.cs index 33a7d473b578..77ef662f9042 100644 --- a/src/RazorSdk/Tool/Json/ObjectReaders_TagHelpers.cs +++ b/src/RazorSdk/Tool/Json/ObjectReaders_TagHelpers.cs @@ -229,6 +229,7 @@ static MetadataObject ReadMetadata(JsonDataReader reader, string propertyName) MetadataKind.Component => reader.ReadNonNullObjectOrDefault(propertyName, ReadComponentMetadata, defaultValue: ComponentMetadata.Default), MetadataKind.EventHandler => reader.ReadNonNullObject(propertyName, ReadEventHandlerMetadata), MetadataKind.ViewComponent => reader.ReadNonNullObject(propertyName, ReadViewComponentMetadata), + MetadataKind.AssetPath => reader.ReadNonNullObject(propertyName, ReadAssetPathMetadata), _ => Assumed.Unreachable($"Unexpected MetadataKind '{metadataKind}'."), }; } @@ -255,7 +256,19 @@ static PropertyMetadata ReadPropertyMetadata(JsonDataReader reader) IsDelegateSignature = reader.ReadBooleanOrFalse(nameof(PropertyMetadata.IsDelegateSignature)), IsDelegateWithAwaitableResult = reader.ReadBooleanOrFalse(nameof(PropertyMetadata.IsDelegateWithAwaitableResult)), IsGenericTyped = reader.ReadBooleanOrFalse(nameof(PropertyMetadata.IsGenericTyped)), - IsInitOnlyProperty = reader.ReadBooleanOrFalse(nameof(PropertyMetadata.IsInitOnlyProperty)) + IsInitOnlyProperty = reader.ReadBooleanOrFalse(nameof(PropertyMetadata.IsInitOnlyProperty)), + AcceptsAssetPath = reader.ReadBooleanOrFalse(nameof(PropertyMetadata.AcceptsAssetPath)) + }; + + return builder.Build(); + } + + static AssetPathMetadata ReadAssetPathMetadata(JsonDataReader reader) + { + var builder = new AssetPathMetadata.Builder + { + Element = reader.ReadNonNullString(nameof(AssetPathMetadata.Element)), + Attribute = reader.ReadNonNullString(nameof(AssetPathMetadata.Attribute)) }; return builder.Build(); diff --git a/src/RazorSdk/Tool/Json/ObjectWriters_TagHelpers.cs b/src/RazorSdk/Tool/Json/ObjectWriters_TagHelpers.cs index 266b51bed47b..7768c35381f7 100644 --- a/src/RazorSdk/Tool/Json/ObjectWriters_TagHelpers.cs +++ b/src/RazorSdk/Tool/Json/ObjectWriters_TagHelpers.cs @@ -200,6 +200,10 @@ static void WriteMetadata(JsonDataWriter writer, string propertyName, MetadataOb WriteViewComponentMetadata(writer, (ViewComponentMetadata)value); break; + case MetadataKind.AssetPath: + WriteAssetPathMetadata(writer, (AssetPathMetadata)value); + break; + default: Debug.Fail($"Unsupported metadata kind '{value.Kind}'."); break; @@ -222,6 +226,7 @@ static void WritePropertyMetadata(JsonDataWriter writer, PropertyMetadata metada writer.WriteIfNotFalse(nameof(metadata.IsDelegateWithAwaitableResult), metadata.IsDelegateWithAwaitableResult); writer.WriteIfNotFalse(nameof(metadata.IsGenericTyped), metadata.IsGenericTyped); writer.WriteIfNotFalse(nameof(metadata.IsInitOnlyProperty), metadata.IsInitOnlyProperty); + writer.WriteIfNotFalse(nameof(metadata.AcceptsAssetPath), metadata.AcceptsAssetPath); } static void WriteBindMetadata(JsonDataWriter writer, BindMetadata metadata) @@ -250,6 +255,12 @@ static void WriteViewComponentMetadata(JsonDataWriter writer, ViewComponentMetad { writer.Write(nameof(metadata.Name), metadata.Name); } + + static void WriteAssetPathMetadata(JsonDataWriter writer, AssetPathMetadata metadata) + { + writer.Write(nameof(metadata.Element), metadata.Element); + writer.Write(nameof(metadata.Attribute), metadata.Attribute); + } } } } diff --git a/src/Workloads/VSInsertion/workloads.csproj b/src/Workloads/VSInsertion/workloads.csproj index 075e90b68398..ec8ed766e155 100644 --- a/src/Workloads/VSInsertion/workloads.csproj +++ b/src/Workloads/VSInsertion/workloads.csproj @@ -116,9 +116,10 @@ - + - + (roundTripped[0].Metadata); + var metadata = (AssetPathMetadata)roundTripped[0].Metadata; + Assert.AreEqual("img", metadata.Element); + Assert.AreEqual("src", metadata.Attribute); + } + + [TestMethod] + public void RoundTrip_ComponentPropertyAcceptingAssetPath_PreservesMetadata() + { + var json = """ + [ + { + "Flags": 1, + "Name": "MyComponent", + "AssemblyName": "ComponentAssembly", + "TypeName": "ComponentNamespace.MyComponent", + "BoundAttributes": [ + { + "Flags": 0, + "Name": "source", + "PropertyName": "Source", + "TypeName": "System.String", + "DisplayName": "Source", + "MetadataKind": 2, + "Metadata": { + "AcceptsAssetPath": true + } + } + ] + } + ] + """; + + var deserialized = Deserialize(json); + var reserialized = Serialize(deserialized); + var roundTripped = Deserialize(reserialized); + + Assert.ContainsSingle(roundTripped); + Assert.ContainsSingle(roundTripped[0].BoundAttributes); + Assert.IsInstanceOfType(roundTripped[0].BoundAttributes[0].Metadata); + var metadata = (PropertyMetadata)roundTripped[0].BoundAttributes[0].Metadata; + Assert.IsTrue(metadata.AcceptsAssetPath); + } + [TestMethod] public void RoundTrip_MultipleTagHelpers_PreservesAll() {