From aa424e47ad4f5c84d2da9c01fbfb77b25b27fcce Mon Sep 17 00:00:00 2001 From: Patrick Meinecke Date: Thu, 21 May 2026 20:22:48 -0400 Subject: [PATCH 1/7] [release/v7.6.2] Remove unused step to clone Internal-PowerShellTeam-Tools repo in PMC publish pipeline (#27496) Co-authored-by: Anam Navied --- .pipelines/templates/release-prep-for-ev2.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.pipelines/templates/release-prep-for-ev2.yml b/.pipelines/templates/release-prep-for-ev2.yml index 3ad716a3af4..ace2b8f7df4 100644 --- a/.pipelines/templates/release-prep-for-ev2.yml +++ b/.pipelines/templates/release-prep-for-ev2.yml @@ -59,20 +59,6 @@ stages: env: ob_restore_phase: true - - pwsh: | - $branch = 'mirror-target' - $gitArgs = "clone", - "--verbose", - "--branch", - "$branch", - "https://$(mscodehubCodeReadPat)@mscodehub.visualstudio.com/PowerShellCore/_git/Internal-PowerShellTeam-Tools", - '$(Pipeline.Workspace)/tools' - $gitArgs | Write-Verbose -Verbose - git $gitArgs - displayName: Clone Internal-PowerShellTeam-Tools from MSCodeHub - env: - ob_restore_phase: true - - pwsh: | Get-ChildItem Env: | Out-String -Stream | write-Verbose -Verbose displayName: 'Capture Environment Variables' From 98b3e1d00045eb997f360d98ae19472775f55095 Mon Sep 17 00:00:00 2001 From: Patrick Meinecke Date: Thu, 28 May 2026 15:03:18 -0400 Subject: [PATCH 2/7] [release/v7.6.3] Verify Apple codesign immediately after ESRP signing (#27542) Co-authored-by: Andy Jordan <2226434+andyleejordan@users.noreply.github.com> --- .pipelines/templates/mac.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.pipelines/templates/mac.yml b/.pipelines/templates/mac.yml index cd492994617..2231d668b48 100644 --- a/.pipelines/templates/mac.yml +++ b/.pipelines/templates/mac.yml @@ -184,4 +184,23 @@ jobs: Expand-Archive -Path $zipFile -DestinationPath $signedDir -Force -Verbose displayName: Expand Apple-signed Mach-O binaries into signed output + - pwsh: | + $signedDir = "$(ob_outputDirectory)/Signed-$(Runtime)" + $expected = 'Developer ID Application: Microsoft Corporation' + $missing = @() + Get-ChildItem $signedDir -Recurse -Include 'pwsh', '*.dylib' | ForEach-Object { + $bytes = [System.IO.File]::ReadAllBytes($_.FullName) + $text = [System.Text.Encoding]::Latin1.GetString($bytes) + if (-not $text.Contains($expected)) { + $missing += $_.FullName + Write-Host "##[error]Missing '$expected' signature in $($_.FullName)" + } else { + Write-Host "OK: $($_.FullName)" + } + } + if ($missing.Count -gt 0) { + throw "ESRP did not apply a Developer ID signature to $($missing.Count) file(s): $($missing -join ', ')" + } + displayName: 'Verify Developer ID signature on Mach-O binaries' + - template: /.pipelines/templates/step/finalize.yml@self From b2afc5f811a443f82f1e054fd44f0ac6c561a9a4 Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Mon, 8 Jun 2026 17:03:35 -0400 Subject: [PATCH 3/7] [release/v7.6.3] Remove the unused `Publish-NugetToMyGet` command from packaging module (#27576) Co-authored-by: Dongbo Wang --- tools/packaging/packaging.psd1 | 1 - tools/packaging/packaging.psm1 | 36 ---------------------------------- 2 files changed, 37 deletions(-) diff --git a/tools/packaging/packaging.psd1 b/tools/packaging/packaging.psd1 index e5b7fb84dfc..de726976f3a 100644 --- a/tools/packaging/packaging.psd1 +++ b/tools/packaging/packaging.psd1 @@ -21,7 +21,6 @@ 'New-ILNugetPackageFromSource' 'New-PSBuildZip' 'New-PSSignedBuildZip' - 'Publish-NugetToMyGet' 'Start-PSPackage' 'Test-PackageManifest' 'Update-PSSignedBuildFolder' diff --git a/tools/packaging/packaging.psm1 b/tools/packaging/packaging.psm1 index 2aecee36d27..1052d95e49c 100644 --- a/tools/packaging/packaging.psm1 +++ b/tools/packaging/packaging.psm1 @@ -3630,42 +3630,6 @@ function New-NugetPackage Pop-Location } -<# -.SYNOPSIS -Publish the specified Nuget Package to MyGet feed. - -.DESCRIPTION -The specified nuget package is published to the powershell.myget.org/powershell-core feed. - -.PARAMETER PackagePath -Path to the NuGet Package. - -.PARAMETER ApiKey -API key for powershell.myget.org -#> -function Publish-NugetToMyGet -{ - param( - [Parameter(Mandatory = $true)] - [string] $PackagePath, - - [Parameter(Mandatory = $true)] - [string] $ApiKey - ) - - $nuget = Get-Command -Type Application nuget -ErrorAction SilentlyContinue - - if ($null -eq $nuget) - { - throw 'nuget application is not available in PATH' - } - - Get-ChildItem $PackagePath | ForEach-Object { - Write-Log "Pushing $_ to PowerShell Myget" - Start-NativeExecution { nuget push $_.FullName -Source 'https://powershell.myget.org/F/powershell-core/api/v2/package' -ApiKey $ApiKey } > $null - } -} - function New-SubFolder { [CmdletBinding(SupportsShouldProcess=$true)] From d6214ccb21e12a575623468d45acfcc26bcba3e7 Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Tue, 9 Jun 2026 14:55:57 -0400 Subject: [PATCH 4/7] [release/v7.6.3] Skip Store Publish when No Channel Seleceted (#27573) Co-authored-by: Justin Chung <124807742+jshigetomi@users.noreply.github.com> Co-authored-by: Justin Chung --- .../templates/package-store-package.yml | 21 ++++++++++++++++--- .pipelines/templates/release-MSIX-Publish.yml | 14 ++++++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/.pipelines/templates/package-store-package.yml b/.pipelines/templates/package-store-package.yml index 6abddae6851..4ee2098332e 100644 --- a/.pipelines/templates/package-store-package.yml +++ b/.pipelines/templates/package-store-package.yml @@ -79,10 +79,24 @@ jobs: $currentChannel = if ($IsLTS) { 'LTS' } elseif ($IsStable) { 'Stable' } elseif ($IsPreview) { 'Preview' } - else { - Write-Error "No valid channel detected" - exit 1 + else { $null } + + if (-not $currentChannel) { + Write-Host "##[warning]No release channel selected (LTS/Stable/Preview all false). Skipping Store package creation." + Write-Host "##vso[task.setvariable variable=SkipStorePublish]true" + # Set channel flags so any downstream conditioned tasks evaluate to skip. + Write-Host "##vso[task.setvariable variable=LTS]false" + Write-Host "##vso[task.setvariable variable=STABLE]false" + Write-Host "##vso[task.setvariable variable=PREVIEW]false" + # Ensure the output directory exists so downstream artifact publishing does not fail. + $outputDirectory = "$(ob_outputDirectory)" + if (-not (Test-Path -LiteralPath $outputDirectory)) { + New-Item -ItemType Directory -Path $outputDirectory -Force | Out-Null } + return + } + + Write-Host "##vso[task.setvariable variable=SkipStorePublish]false" $config = $channelConfigs[$currentChannel] Write-Verbose -Verbose "Selected channel: $currentChannel" @@ -242,3 +256,4 @@ jobs: exit 1 } displayName: 'Upload StoreBroker Package' + condition: and(succeeded(), ne(variables['SkipStorePublish'], 'true')) diff --git a/.pipelines/templates/release-MSIX-Publish.yml b/.pipelines/templates/release-MSIX-Publish.yml index cbbdb70cc4f..a68755725ce 100644 --- a/.pipelines/templates/release-MSIX-Publish.yml +++ b/.pipelines/templates/release-MSIX-Publish.yml @@ -34,6 +34,7 @@ jobs: displayName: 'Capture ReleaseTag and Downloaded Packages' - task: PowerShell@2 + condition: or(eq(variables['LTS'], 'true'), eq(variables['STABLE'], 'true'), eq(variables['PREVIEW'], 'true')) inputs: targetType: inline script: | @@ -70,12 +71,13 @@ jobs: displayName: 'Add Changelog Link and Version Number to SBJSON' - task: PowerShell@2 + condition: or(eq(variables['LTS'], 'true'), eq(variables['STABLE'], 'true'), eq(variables['PREVIEW'], 'true')) inputs: targetType: inline script: | # Convert ADO variables to PowerShell boolean variables $IsLTS = '$(LTS)' -eq 'true' - $IsStable = '$(STABLE)' -eq 'true' + $IsStable = '$(STABLE)' -eq 'true' $IsPreview = '$(PREVIEW)' -eq 'true' Write-Verbose -Verbose "Channel Selection - LTS: $(LTS), Stable: $(STABLE), Preview: $(PREVIEW)" @@ -83,10 +85,12 @@ jobs: $currentChannel = if ($IsLTS) { 'LTS' } elseif ($IsStable) { 'Stable' } elseif ($IsPreview) { 'Preview' } - else { - Write-Error "No valid channel detected" - exit 1 - } + else { $null } + + if (-not $currentChannel) { + Write-Host "##[warning]No release channel selected (LTS/Stable/Preview all false). Skipping Store publish." + return + } # Assign AppID for Store-Publish Task $appID = $null From 0101c66a5abf0b05f5df1a77d40dcb883195337f Mon Sep 17 00:00:00 2001 From: Patrick Meinecke Date: Tue, 9 Jun 2026 16:52:31 -0400 Subject: [PATCH 5/7] [release/v7.6.3] Add PMC mappings for debian12 arm64 and debian13 arm64 (#27584) Co-authored-by: Anam Navied --- tools/packages.microsoft.com/mapping.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/packages.microsoft.com/mapping.json b/tools/packages.microsoft.com/mapping.json index 7cb212ffee3..9214e83cc16 100644 --- a/tools/packages.microsoft.com/mapping.json +++ b/tools/packages.microsoft.com/mapping.json @@ -88,6 +88,13 @@ ], "PackageFormat": "PACKAGE_NAME_POWERSHELL_RELEASE-1.deb_amd64.deb" }, + { + "url": "microsoft-debian-bookworm-prod", + "distribution": [ + "bookworm" + ], + "PackageFormat": "PACKAGE_NAME_POWERSHELL_RELEASE-1.deb_arm64.deb" + }, { "url": "microsoft-debian-trixie-prod", "distribution": [ @@ -95,6 +102,13 @@ ], "PackageFormat": "PACKAGE_NAME_POWERSHELL_RELEASE-1.deb_amd64.deb" }, + { + "url": "microsoft-debian-trixie-prod", + "distribution": [ + "trixie" + ], + "PackageFormat": "PACKAGE_NAME_POWERSHELL_RELEASE-1.deb_arm64.deb" + }, { "url": "microsoft-ubuntu-bionic-prod", "distribution": [ From 4061323c4e021bea0a08e753f13df015fed607e5 Mon Sep 17 00:00:00 2001 From: PowerShell Team Bot <69177312+pwshBot@users.noreply.github.com> Date: Tue, 9 Jun 2026 17:05:37 -0400 Subject: [PATCH 6/7] [release/v7.6.3] Update branch for release (#27583) --- CHANGELOG/v7.6/dependencychanges.json | 13 +++++++++++++ DotnetRuntimeMetadata.json | 2 +- global.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG/v7.6/dependencychanges.json b/CHANGELOG/v7.6/dependencychanges.json index a0122c94ac6..622085afad0 100644 --- a/CHANGELOG/v7.6/dependencychanges.json +++ b/CHANGELOG/v7.6/dependencychanges.json @@ -62,5 +62,18 @@ "AdvisoryUrls": [], "Justification": "Updated .NET SDK. Building with the latest SDK is required.", "TimestampUtc": "2026-05-14T17:53:01.1430124Z" + }, + { + "ChangeType": "NonSecurity", + "Branch": "release/v7.6.3", + "PackageId": ".NET SDK", + "FromVersion": "10.0.300", + "ToVersion": "10.0.301", + "VulnerabilityId": [], + "Severity": [], + "VulnerableRanges": [], + "AdvisoryUrls": [], + "Justification": "Updated .NET SDK. Building with the latest SDK is required.", + "TimestampUtc": "2026-06-09T20:21:29.3313254Z" } ] diff --git a/DotnetRuntimeMetadata.json b/DotnetRuntimeMetadata.json index a09be0f382c..5ce8067f7db 100644 --- a/DotnetRuntimeMetadata.json +++ b/DotnetRuntimeMetadata.json @@ -4,7 +4,7 @@ "quality": "daily", "qualityFallback": "preview", "packageVersionPattern": "9.0.0-preview.6", - "sdkImageVersion": "10.0.300", + "sdkImageVersion": "10.0.301", "nextChannel": "9.0.0-preview.7", "azureFeed": "", "sdkImageOverride": "" diff --git a/global.json b/global.json index 9769786b11b..f071a741b6c 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "10.0.300" + "version": "10.0.301" } } From a1994c19a0badf524d714cacffe7986c5c8613c6 Mon Sep 17 00:00:00 2001 From: Patrick Meinecke Date: Thu, 11 Jun 2026 14:32:08 -0400 Subject: [PATCH 7/7] Update CHANGELOG for v7.6.3 (#27593) --- CHANGELOG/7.6.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG/7.6.md b/CHANGELOG/7.6.md index da1370779cc..bc51ff859fb 100644 --- a/CHANGELOG/7.6.md +++ b/CHANGELOG/7.6.md @@ -1,5 +1,27 @@ # 7.6 Changelog +## [7.6.3] + +### Build and Packaging Improvements + +
+ + + +

Update to .NET SDK 10.0.301

+ +
+ +
    +
  • Remove the unused Publish-NugetToMyGet command from packaging module (#27576)
  • +
  • Verify Apple codesign immediately after ESRP signing (#27542)
  • +
  • Remove unused step to clone Internal-PowerShellTeam-Tools repo in PMC publish pipeline (#27496)
  • +
+ +
+ +[7.6.3]: https://github.com/PowerShell/PowerShell/compare/v7.6.2...v7.6.3 + ## [7.6.2] ### Engine Updates and Fixes