diff --git a/.vsts-ci/mac.yml b/.vsts-ci/mac.yml index 3cd35335be..aeb9e8e5c2 100644 --- a/.vsts-ci/mac.yml +++ b/.vsts-ci/mac.yml @@ -97,10 +97,6 @@ stages: vmImage: macOS-latest steps: - pwsh: | - # Remove old .NET SDKs - if (Test-Path -Path $HOME/.dotnet) { - Remove-Item $HOME/.dotnet -Recurse -Force - } Import-Module .\tools\ci.psm1 New-CodeCoverageAndTestPackage displayName: CodeCoverage and Test Package diff --git a/.vsts-ci/templates/ci-build.yml b/.vsts-ci/templates/ci-build.yml index b88aa1b7c3..cbbd534941 100644 --- a/.vsts-ci/templates/ci-build.yml +++ b/.vsts-ci/templates/ci-build.yml @@ -11,38 +11,31 @@ jobs: displayName: ${{ parameters.displayName }} steps: - - powershell: | + - pwsh: | Get-ChildItem -Path env: displayName: Capture Environment condition: succeededOrFailed() - - powershell: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))" + - pwsh: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhmmss"))" displayName: Set Build Name for Non-PR condition: ne(variables['Build.Reason'], 'PullRequest') - ${{ if ne(variables['AzDevOpsFeed'], '') }}: - template: /tools/releaseBuild/azureDevOps/templates/insert-nuget-config-azfeed.yml - - pwsh: | - if (Test-Path -Path $HOME/.dotnet) { - Remove-Item $HOME/.dotnet -Recurse -Force - } - displayName: Remove Old .NET SDKs - condition: succeededOrFailed() - - pwsh: | Import-Module .\tools\ci.psm1 Invoke-CIInstall -SkipUser displayName: Bootstrap condition: succeeded() - - powershell: | + - pwsh: | Import-Module .\tools\ci.psm1 Invoke-CIBuild displayName: Build condition: succeeded() - - powershell: | + - pwsh: | Import-Module .\tools\ci.psm1 Restore-PSOptions Invoke-CIxUnit -SkipFailing diff --git a/.vsts-ci/templates/nix-test.yml b/.vsts-ci/templates/nix-test.yml index 6a1b6e6f9d..f2f04d9dd5 100644 --- a/.vsts-ci/templates/nix-test.yml +++ b/.vsts-ci/templates/nix-test.yml @@ -33,13 +33,6 @@ jobs: displayName: 'Capture Artifacts Directory' continueOnError: true - - pwsh: | - if (Test-Path -Path $HOME/.dotnet) { - Remove-Item $HOME/.dotnet -Recurse -Force - } - displayName: Remove Old .NET SDKs - condition: succeededOrFailed() - - pwsh: | Import-Module .\tools\ci.psm1 Invoke-CIInstall -SkipUser diff --git a/DotnetRuntimeMetadata.json b/DotnetRuntimeMetadata.json index 7a24b57b19..1b95abccd6 100644 --- a/DotnetRuntimeMetadata.json +++ b/DotnetRuntimeMetadata.json @@ -1,13 +1,15 @@ { "sdk": { - "channel": "6.0.1xx-rc1", + "channel": "6.0.1xx", "quality": "signed", "qualityFallback": "daily", - "packageVersionPattern": "6.0.0-rc.1", + "packageVersionPattern": "6.0.0", "sdkImageVersion": "6.0.100", - "nextChannel": "6.0.1xx-rc1" + "nextChannel": "6.0.1xx", + "azureFeed": "https://dotnetstage.blob.core.windows.net/6-0-100-rtm-21527-11-public", + "sdkImageOverride": "6.0.100-rtm.21527.11" }, "internalfeed" : { - "url": "https://pkgs.dev.azure.com/dnceng/public/_packaging/6.0.100-rc.1.21458.32-shipping/nuget/v2" + "url": "https://pkgs.dev.azure.com/dnceng/public/_packaging/6.0.100-rtm.21527.11-shipping/nuget/v2" } } diff --git a/assets/wix/files.wxs b/assets/wix/files.wxs index 8fcd2f987a..13e38dbdd6 100644 --- a/assets/wix/files.wxs +++ b/assets/wix/files.wxs @@ -1990,6 +1990,9 @@ + + + @@ -2052,6 +2055,9 @@ + + + @@ -2114,6 +2120,9 @@ + + + @@ -2176,6 +2185,9 @@ + + + @@ -2238,6 +2250,9 @@ + + + @@ -2300,6 +2315,9 @@ + + + @@ -2362,6 +2380,9 @@ + + + @@ -2424,6 +2445,9 @@ + + + @@ -2486,6 +2510,9 @@ + + + @@ -2548,6 +2575,9 @@ + + + @@ -2610,6 +2640,9 @@ + + + @@ -2672,6 +2705,9 @@ + + + @@ -2734,6 +2770,9 @@ + + + @@ -3109,8 +3148,11 @@ - - + + + + + @@ -4110,10 +4152,24 @@ - + + + + + + + + + + + + + + + diff --git a/build.psm1 b/build.psm1 index 1f600cf059..b8369dbaf1 100644 --- a/build.psm1 +++ b/build.psm1 @@ -16,6 +16,8 @@ $script:Options = $null $dotnetMetadata = Get-Content $PSScriptRoot/DotnetRuntimeMetadata.json | ConvertFrom-Json $dotnetCLIChannel = $dotnetMetadata.Sdk.Channel $dotnetCLIQuality = $dotnetMetadata.Sdk.Quality +$dotnetAzureFeed = $dotnetMetadata.Sdk.azureFeed +$dotnetSDKVersionOveride = $dotnetMetadata.Sdk.sdkImageOverride $dotnetCLIRequiredVersion = $(Get-Content $PSScriptRoot/global.json | ConvertFrom-Json).Sdk.Version # Track if tags have been sync'ed @@ -386,7 +388,8 @@ function Start-PSBuild { } # Verify if the dotnet in-use is the required version - $dotnetCLIInstalledVersion = Start-NativeExecution -sb { dotnet --version } -IgnoreExitcode + $dotnetCLIInstalledVersion = Get-LatestInstalledSDK + If ($dotnetCLIInstalledVersion -ne $dotnetCLIRequiredVersion) { Write-Warning @" The currently installed .NET Command Line Tools is not the required version. @@ -1746,6 +1749,13 @@ function Install-Dotnet { [string]$FeedCredential ) + Write-Verbose -Verbose "In install-dotnet" + + # This is needed workaround for RTM pre-release build as the SDK version is always 6.0.100 after installation for every pre-release + if ($dotnetCLIRequiredVersion -like '6.0.100-rtm.*') { + $dotnetCLIRequiredVersion = '6.0.100' + } + # This allows sudo install to be optional; needed when running in containers / as root # Note that when it is null, Invoke-Expression (but not &) must be used to interpolate properly $sudo = if (!$NoSudo) { "sudo" } @@ -1773,10 +1783,12 @@ function Install-Dotnet { Write-Warning "This script only removes prior versions of dotnet for Ubuntu and OS X" } + Write-Verbose -Verbose "Invoking install script" + # Install new dotnet 1.1.0 preview packages $installScript = "dotnet-install.sh" - Start-NativeExecution { - Write-Verbose -Message "downloading install script from $installObtainUrl/$installScript ..." -Verbose + + Write-Verbose -Message "downloading install script from $installObtainUrl/$installScript ..." -Verbose & $wget $installObtainUrl/$installScript if ((Get-ChildItem "./$installScript").Length -eq 0) { @@ -1795,9 +1807,16 @@ function Install-Dotnet { } if ($AzureFeed) { - $bashArgs += @('-AzureFeed', $AzureFeed, '-FeedCredential', $FeedCredential) + $bashArgs += @('-AzureFeed', $AzureFeed) } + if ($FeedCredential) { + $bashArgs += @('-FeedCredential', $FeedCredential) + } + + $bashArgs | Out-String | Write-Verbose -Verbose + + Start-NativeExecution { bash @bashArgs } } elseif ($environment.IsWindows) { @@ -1820,35 +1839,44 @@ function Install-Dotnet { } if ($AzureFeed) { - $installArgs += @{ - AzureFeed = $AzureFeed - $FeedCredential = $FeedCredential - } + $installArgs += @{AzureFeed = $AzureFeed} } + if ($FeedCredential) { + $installArgs += @{FeedCredential = $FeedCredential} + } + + $installArgs | Out-String | Write-Verbose -Verbose + & ./$installScript @installArgs } else { # dotnet-install.ps1 uses APIs that are not supported in .NET Core, so we run it with Windows PowerShell $fullPSPath = Join-Path -Path $env:windir -ChildPath "System32\WindowsPowerShell\v1.0\powershell.exe" $fullDotnetInstallPath = Join-Path -Path $PWD.Path -ChildPath $installScript + + if ($Version) { + $psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Version', $Version, '-Quality', $Quality) + } + elseif ($Channel) { + $psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Channel', $Channel, '-Quality', $Quality) + } + + if ($InstallDir) { + $psArgs += @('-InstallDir', $InstallDir) + } + + if ($AzureFeed) { + $psArgs += @('-AzureFeed', $AzureFeed) + } + + if ($FeedCredential) { + $psArgs += @('-FeedCredential', $FeedCredential) + } + + $psArgs | Out-String | Write-Verbose -Verbose + Start-NativeExecution { - - if ($Version) { - $psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Version', $Version, '-Quality', $Quality) - } - elseif ($Channel) { - $psArgs = @('-NoLogo', '-NoProfile', '-File', $fullDotnetInstallPath, '-Channel', $Channel, '-Quality', $Quality) - } - - if ($InstallDir) { - $psArgs += @('-InstallDir', $InstallDir) - } - - if ($AzureFeed) { - $psArgs += @('-AzureFeed', $AzureFeed, '-FeedCredential', $FeedCredential) - } - & $fullPSPath @psArgs } } @@ -1882,6 +1910,10 @@ function Start-PSBootstrap { Push-Location $PSScriptRoot/tools + if ($dotnetSDKVersionOveride) { + $Version = $dotnetSDKVersionOveride + } + try { if ($environment.IsLinux -or $environment.IsMacOS) { # This allows sudo install to be optional; needed when running in containers / as root @@ -2014,14 +2046,18 @@ function Start-PSBootstrap { } } + Write-Verbose -Verbose "Calling Find-Dotnet from Start-PSBootstrap" + # Try to locate dotnet-SDK before installing it Find-Dotnet + Write-Verbose -Verbose "Back from calling Find-Dotnet from Start-PSBootstrap" + # Install dotnet-SDK $dotNetExists = precheck 'dotnet' $null $dotNetVersion = [string]::Empty if($dotNetExists) { - $dotNetVersion = Start-NativeExecution -sb { dotnet --version } -IgnoreExitcode + $dotNetVersion = Get-LatestInstalledSDK } if(!$dotNetExists -or $dotNetVersion -ne $dotnetCLIRequiredVersion -or $Force.IsPresent) { @@ -2036,6 +2072,12 @@ function Start-PSBootstrap { } $DotnetArguments = @{ Channel=$Channel; Version=$Version; NoSudo=$NoSudo } + + if ($dotnetAzureFeed) { + $null = $DotnetArguments.Add("AzureFeed", $dotnetAzureFeed) + $null = $DotnetArguments.Add("FeedCredential", $null) + } + Install-Dotnet @DotnetArguments } else { @@ -2057,6 +2099,12 @@ function Start-PSBootstrap { } } +function Get-LatestInstalledSDK { + Start-NativeExecution -sb { + dotnet --list-sdks | Select-String -Pattern '\d*.\d*.\d*(-\w*\.\d*)?' | ForEach-Object { [System.Management.Automation.SemanticVersion]::new($_.matches.value) } | Sort-Object -Descending | Select-Object -First 1 + } -IgnoreExitcode 2> $null +} + function Start-DevPowerShell { [CmdletBinding(DefaultParameterSetName='ConfigurationParamSet')] param( @@ -2189,17 +2237,29 @@ function Start-ResGen } function Find-Dotnet() { + Write-Verbose -Verbose "In Find-DotNet" + $originalPath = $env:PATH $dotnetPath = if ($environment.IsWindows) { "$env:LocalAppData\Microsoft\dotnet" } else { "$env:HOME/.dotnet" } + $chosenDotNetVersion = if($dotnetSDKVersionOveride) { + $dotnetSDKVersionOveride + } + else { + $dotnetCLIRequiredVersion + } + # If there dotnet is already in the PATH, check to see if that version of dotnet can find the required SDK # This is "typically" the globally installed dotnet if (precheck dotnet) { # Must run from within repo to ensure global.json can specify the required SDK version Push-Location $PSScriptRoot - $dotnetCLIInstalledVersion = Start-NativeExecution -sb { dotnet --version } -IgnoreExitcode 2> $null + $dotnetCLIInstalledVersion = Get-LatestInstalledSDK Pop-Location - if ($dotnetCLIInstalledVersion -ne $dotnetCLIRequiredVersion) { + + Write-Verbose -Verbose "dotnetCLIInstalledVersion = $dotnetCLIInstalledVersion`nchosenDotNetVersion = $chosenDotNetVersion" + + if ($dotnetCLIInstalledVersion -ne $chosenDotNetVersion) { Write-Warning "The 'dotnet' in the current path can't find SDK version ${dotnetCLIRequiredVersion}, prepending $dotnetPath to PATH." # Globally installed dotnet doesn't have the required SDK version, prepend the user local dotnet location $env:PATH = $dotnetPath + [IO.Path]::PathSeparator + $env:PATH diff --git a/global.json b/global.json index 3ebca84bcf..047020849f 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "6.0.100-rc.2.21505.57" + "version": "6.0.100" } } diff --git a/nuget.config b/nuget.config index 7700d4e098..cf9fec6fb1 100644 --- a/nuget.config +++ b/nuget.config @@ -4,9 +4,11 @@ + + diff --git a/src/Microsoft.PowerShell.Commands.Management/Microsoft.PowerShell.Commands.Management.csproj b/src/Microsoft.PowerShell.Commands.Management/Microsoft.PowerShell.Commands.Management.csproj index fbf6e01456..7ab8ecf282 100644 --- a/src/Microsoft.PowerShell.Commands.Management/Microsoft.PowerShell.Commands.Management.csproj +++ b/src/Microsoft.PowerShell.Commands.Management/Microsoft.PowerShell.Commands.Management.csproj @@ -47,7 +47,7 @@ - + diff --git a/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj b/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj index 2dc75f7edd..bff5cc802d 100644 --- a/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj +++ b/src/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj @@ -31,9 +31,9 @@ - - - + + + diff --git a/src/Microsoft.PowerShell.CoreCLR.Eventing/Microsoft.PowerShell.CoreCLR.Eventing.csproj b/src/Microsoft.PowerShell.CoreCLR.Eventing/Microsoft.PowerShell.CoreCLR.Eventing.csproj index 238d772473..c2dba27c14 100644 --- a/src/Microsoft.PowerShell.CoreCLR.Eventing/Microsoft.PowerShell.CoreCLR.Eventing.csproj +++ b/src/Microsoft.PowerShell.CoreCLR.Eventing/Microsoft.PowerShell.CoreCLR.Eventing.csproj @@ -8,7 +8,7 @@ - + diff --git a/src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj b/src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj index 3cb21e8d88..b79ab533b8 100644 --- a/src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj +++ b/src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj @@ -18,19 +18,19 @@ - - - + + + - - - - - - + + + + + + - + diff --git a/src/Microsoft.WSMan.Management/Microsoft.WSMan.Management.csproj b/src/Microsoft.WSMan.Management/Microsoft.WSMan.Management.csproj index 232a1ec314..d6b7c281f9 100644 --- a/src/Microsoft.WSMan.Management/Microsoft.WSMan.Management.csproj +++ b/src/Microsoft.WSMan.Management/Microsoft.WSMan.Management.csproj @@ -10,7 +10,7 @@ - + diff --git a/src/System.Management.Automation/System.Management.Automation.csproj b/src/System.Management.Automation/System.Management.Automation.csproj index df46277a11..c7ba6db749 100644 --- a/src/System.Management.Automation/System.Management.Automation.csproj +++ b/src/System.Management.Automation/System.Management.Automation.csproj @@ -16,16 +16,16 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/test/perf/dotnet-tools/Reporting/Reporting.csproj b/test/perf/dotnet-tools/Reporting/Reporting.csproj index ca56fc51ef..e0d2f3b824 100644 --- a/test/perf/dotnet-tools/Reporting/Reporting.csproj +++ b/test/perf/dotnet-tools/Reporting/Reporting.csproj @@ -1,4 +1,4 @@ - + Library @@ -7,7 +7,7 @@ - + diff --git a/test/perf/dotnet-tools/ResultsComparer/ResultsComparer.csproj b/test/perf/dotnet-tools/ResultsComparer/ResultsComparer.csproj index 9934bd0df2..838d6ccd67 100644 --- a/test/perf/dotnet-tools/ResultsComparer/ResultsComparer.csproj +++ b/test/perf/dotnet-tools/ResultsComparer/ResultsComparer.csproj @@ -1,4 +1,4 @@ - + Exe $(PERFLAB_TARGET_FRAMEWORKS) @@ -6,10 +6,10 @@ latest - + - + diff --git a/test/tools/TestService/TestService.csproj b/test/tools/TestService/TestService.csproj index 8ad3769503..491a77f0c8 100644 --- a/test/tools/TestService/TestService.csproj +++ b/test/tools/TestService/TestService.csproj @@ -13,7 +13,7 @@ - + diff --git a/test/tools/WebListener/WebListener.csproj b/test/tools/WebListener/WebListener.csproj index ca6c52c562..bbc07be525 100644 --- a/test/tools/WebListener/WebListener.csproj +++ b/test/tools/WebListener/WebListener.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/tools/UpdateDotnetRuntime.ps1 b/tools/UpdateDotnetRuntime.ps1 index 37e2d43dec..7fe5836392 100644 --- a/tools/UpdateDotnetRuntime.ps1 +++ b/tools/UpdateDotnetRuntime.ps1 @@ -189,7 +189,7 @@ function Get-DotnetUpdate { try { try { - $latestSDKVersionString = Invoke-RestMethod -Uri "http://aka.ms/dotnet/$channel/$quality/sdk-productVersion.txt" -ErrorAction Stop | ForEach-Object { $_.Trim() } + $latestSDKVersionString = Invoke-RestMethod -Uri "http://aka.ms/dotnet/$channel/$quality/productVersion.txt" -ErrorAction Stop | ForEach-Object { $_.Trim() } $selectedQuality = $quality } catch { if ($_.exception.Response.StatusCode -eq 'NotFound') { @@ -201,7 +201,7 @@ function Get-DotnetUpdate { if (-not $latestSDKVersionString -or -not $latestSDKVersionString.StartsWith($sdkImageVersion)) { # we did not get a version number so fall back to daily - $latestSDKVersionString = Invoke-RestMethod -Uri "http://aka.ms/dotnet/$channel/$qualityFallback/sdk-productVersion.txt" -ErrorAction Stop | ForEach-Object { $_.Trim() } + $latestSDKVersionString = Invoke-RestMethod -Uri "http://aka.ms/dotnet/$channel/$qualityFallback/productVersion.txt" -ErrorAction Stop | ForEach-Object { $_.Trim() } $selectedQuality = $qualityFallback if (-not $latestSDKVersionString.StartsWith($sdkImageVersion)) { @@ -339,6 +339,9 @@ if ($dotnetUpdate.ShouldUpdate) { Start-PSBootstrap -Package Start-PSBuild -Clean -Configuration Release -CrossGen -InteractiveAuth:$InteractiveAuth + $publishPath = Split-Path (Get-PSOutput) + Remove-Item -Path "$publishPath\*.pdb" + try { Start-PSPackage -Type msi -SkipReleaseChecks -InformationVariable wxsData } catch { diff --git a/tools/ci.psm1 b/tools/ci.psm1 index 432c00d628..f4ed3c7894 100644 --- a/tools/ci.psm1 +++ b/tools/ci.psm1 @@ -171,6 +171,7 @@ function Invoke-CIInstall } Set-BuildVariable -Name TestPassed -Value False + Write-Verbose -Verbose -Message "Calling Start-PSBootstrap from Invoke-CIInstall" Start-PSBootstrap } diff --git a/tools/packaging/projects/reference/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj b/tools/packaging/projects/reference/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj index 3e50a22097..53eee6e16d 100644 --- a/tools/packaging/projects/reference/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj +++ b/tools/packaging/projects/reference/Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands.Utility.csproj @@ -14,7 +14,7 @@ - + diff --git a/tools/packaging/projects/reference/System.Management.Automation/System.Management.Automation.csproj b/tools/packaging/projects/reference/System.Management.Automation/System.Management.Automation.csproj index 036022f1c6..e382b8cbb3 100644 --- a/tools/packaging/projects/reference/System.Management.Automation/System.Management.Automation.csproj +++ b/tools/packaging/projects/reference/System.Management.Automation/System.Management.Automation.csproj @@ -9,7 +9,6 @@ - - + diff --git a/tools/releaseBuild/azureDevOps/templates/release-SDKTests.yml b/tools/releaseBuild/azureDevOps/templates/release-SDKTests.yml index 5e46014714..d6b773a447 100644 --- a/tools/releaseBuild/azureDevOps/templates/release-SDKTests.yml +++ b/tools/releaseBuild/azureDevOps/templates/release-SDKTests.yml @@ -54,12 +54,6 @@ jobs: Write-Verbose -Message "Register new package source 'dotnet'" -verbose } - ## Remove old .NET SDKs if any exists - if (Test-Path -Type Container $Home/.dotnet) - { - Remove-Item $Home/.dotnet -Recurse -Force - } - ## Install latest version from the channel #Install-Dotnet -Channel "$Channel" -Version $sdkVersion