[release/v7.5] Merge the v7.6.0-preview.5 release branch back to master#26958
Conversation
There was a problem hiding this comment.
Pull request overview
Backports build/release pipeline template updates from the v7.6.0-preview.5 merge-back into release/v7.5, primarily focusing on MSIX Store publishing changes and release validation improvements.
Changes:
- Updates Store publishing to use a unified
StoreAppPublish-Privateendpoint with separate per-channel publish tasks. - Fixes changelog URL anchor generation logic for tags (preview detection + anchor formatting).
- Adds
Start-PSBootstrap -Scenario Dotnetto SDK/global-tools validation and updates StoreBroker config defaults.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| .pipelines/templates/windows-hosted-build.yml | Adjusts the set of modules copied into the Windows global tool package. |
| .pipelines/templates/release-validate-sdk.yml | Adds bootstrap/init steps for SDK validation; updates environment settings. |
| .pipelines/templates/release-validate-globaltools.yml | Adds bootstrap/init steps before validating dotnet global tools. |
| .pipelines/templates/release-githubNuget.yml | Fixes changelog URL generation for tag push guidance. |
| .pipelines/templates/release-MSIX-Publish.yml | Refactors Store publish to run distinct LTS/Stable/Preview publishing tasks. |
| .pipelines/templates/package-create-msix.yml | Updates StoreBroker packaging to align with the unified publish endpoint + updates PDP/SBConfig handling. |
| .pipelines/templates/channelSelection.yml | Minor template formatting changes (but currently includes a conflict marker). |
| .pipelines/store/SBConfig.json | Updates StoreBroker defaults (PDP include + publish mode). |
| .pipelines/PowerShell-Release-Official.yml | Updates Linux SDK validation image and minor formatting tweaks. |
| Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)" | ||
| Write-Host "##vso[task.setvariable variable=SBConfigPath]$($sbConfigPath)" |
There was a problem hiding this comment.
ServiceConnection is being set from $config.ServiceEndpoint, but it isn't referenced anywhere else in this template (the StoreBroker tasks now use hard-coded StoreAppPublish-Private). Consider removing this variable assignment (and the unused per-channel ServiceEndpoint config values) to avoid confusion about which endpoint is actually used.
| $metadata = Get-Content "$(Build.SourcesDirectory)/PowerShell/tools/metadata.json" -Raw | ConvertFrom-Json | ||
|
|
||
|
|
||
| >>>>>>> 9fef02695 (Merge the v7.6.0-preview.5 release branch back to master) | ||
|
|
||
| $LTS = $metadata.LTSRelease.PublishToChannels |
There was a problem hiding this comment.
This template contains an unresolved merge-conflict marker (>>>>>>> ...). That will break YAML parsing when the template is included; please remove the marker and resolve the merge properly.
| - pwsh: | | ||
| Get-Content -Path "$(System.DefaultWorkingDirectory)/SBLog.txt" -ErrorAction SilentlyContinue | ||
| displayName: Upload Store Failure Log | ||
| condition: failed() |
There was a problem hiding this comment.
This step is labeled "Upload Store Failure Log", but it only prints the contents of SBLog.txt and doesn't publish it as an artifact or attach it anywhere. Either rename the step to reflect its behavior (e.g., "Print Store Failure Log") or add an explicit artifact upload/publish step if the intent is to persist the log.
| $modulesToCopy = @( | ||
| 'PowerShellGet' | ||
| 'PackageManagement' | ||
| 'Microsoft.PowerShell.PSResourceGet' | ||
| 'Microsoft.PowerShell.Archive' | ||
| 'PSReadLine' | ||
| 'ThreadJob' | ||
| 'Microsoft.PowerShell.ThreadJob' | ||
| ) |
There was a problem hiding this comment.
The module folder list switched from 'ThreadJob' to 'Microsoft.PowerShell.ThreadJob'. In this repo, the PSGallery module dependency is referenced as the NuGet package 'ThreadJob' (src/Modules/PSGalleryModules.csproj), and the corresponding module folder is typically 'ThreadJob'. Using 'Microsoft.PowerShell.ThreadJob' here is likely to make Copy-Item fail because the source module folder won't exist. Consider reverting to 'ThreadJob' (or otherwise align this entry with the actual folder name under the built 'Modules' directory).
| Import-Module "$repoRoot/build.psm1" -Force -Verbose | ||
| Start-PSBootstrap -Scenario Dotnet | ||
|
|
||
| $env:DOTNET_NOLOGO=1 | ||
| >>>>>>> 9fef02695 (Merge the v7.6.0-preview.5 release branch back to master) | ||
|
|
There was a problem hiding this comment.
This file contains an unresolved merge-conflict marker (>>>>>>> ...). YAML parsing will fail and the pipeline template won't run until this marker is removed and the conflict is properly resolved.
| - pwsh: | | ||
| $repoRoot = "$(Build.SourcesDirectory)" | ||
|
|
||
| $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 | ||
|
|
||
| Import-Module "$repoRoot/build.psm1" -Force -Verbose | ||
| Start-PSBootstrap -Scenario Dotnet |
There was a problem hiding this comment.
$repoRoot is set to $(Build.SourcesDirectory), but other release templates in this repo consistently reference the repo content under $(Build.SourcesDirectory)/PowerShell (for example, release-SetTagAndChangelog.yml and release-validate-globaltools.yml). With the current value, Import-Module "$repoRoot/build.psm1" and Set-Location $repoRoot/test/hosting are likely to point at the wrong path in the release pipeline layout. Update $repoRoot (and the insert-nuget-config repoRoot parameter if needed) to the same .../PowerShell root used elsewhere.
| - task: MS-RDX-MRO.windows-store-publish.package-task.store-package@3 | ||
| displayName: 'Create StoreBroker Package (Preview)' | ||
| condition: eq(variables['PREVIEW'], 'true') | ||
| displayName: 'Create StoreBroker Package' | ||
| inputs: | ||
| serviceEndpoint: 'StoreAppPublish-Preview' | ||
| sbConfigPath: '$(SBConfigPath)' | ||
| sourceFolder: '$(BundleDir)' | ||
| contents: '*.msixBundle' | ||
| outSBName: 'PowerShellStorePackage' | ||
| pdpPath: '$(System.DefaultWorkingDirectory)/PowerShell/.pipelines/store/PDP/PDP' | ||
| pdpMediaPath: '$(System.DefaultWorkingDirectory)/PowerShell/.pipelines/store/PDP/PDP-Media' | ||
|
|
||
| - task: MS-RDX-MRO.windows-store-publish.package-task.store-package@3 | ||
| displayName: 'Create StoreBroker Package (Stable/LTS)' | ||
| condition: or(eq(variables['STABLE'], 'true'), eq(variables['LTS'], 'true')) | ||
| serviceEndpoint: 'StoreAppPublish-Private' | ||
| inputs: | ||
| serviceEndpoint: 'StoreAppPublish-Stable' | ||
| serviceEndpoint: 'StoreAppPublish-Private' | ||
| >>>>>>> 9fef02695 (Merge the v7.6.0-preview.5 release branch back to master) | ||
| sbConfigPath: '$(SBConfigPath)' |
There was a problem hiding this comment.
This file contains an unresolved merge-conflict marker (>>>>>>> ...) and also has duplicate inputs: keys under the same task. Either of these will break YAML parsing / task configuration; please resolve the conflict and ensure the task has a single inputs: mapping.
| # Create namespace manager for XML with default namespace | ||
| $nsManager = New-Object System.Xml.XmlNamespaceManager($pdpXml.NameTable) | ||
| $nsManager.AddNamespace("pd", "http://schemas.microsoft.com/appx/2012/ProductDescription") | ||
|
|
||
| $appStoreNameElement = $pdpXml.SelectSingleNode("//pd:AppStoreName", $nsManager) | ||
| if ($appStoreNameElement) { | ||
| $appStoreNameElement.InnerText = $config.AppStoreName | ||
| Write-Verbose -Verbose "Updated AppStoreName to: $($config.AppStoreName)" | ||
| $appStoreNameElement.SetAttribute("_locID", $config.AppStoreName) | ||
| Write-Verbose -Verbose "Updated AppStoreName _locID to: $($config.AppStoreName)" |
There was a problem hiding this comment.
The PDP update logic now sets the AppStoreName element’s _locID attribute to values like PowerShell / PowerShell-LTS, but it does not set the element text. In the checked-in PDP.xml, <AppStoreName _locID="PowerShell-Private"> currently has no inner text, so this change likely won’t update the Store name as intended. If the goal is to update the Store display name, set the element content (or clarify/update both _locID and the text consistently with how StoreBroker expects this value).
The v7.6.0-preview.5 release is done. Merge the release branch back to master using a merge commit.
9463030 to
7dbceaa
Compare
Backport of #26180 to release/v7.5
Triggered by @adityapatwardhan on behalf of @daxian-dbw
Original CL Label: CL-BuildPackaging
/cc @PowerShell/powershell-maintainers
Impact
REQUIRED: Choose either Tooling Impact or Customer Impact (or both). At least one checkbox must be selected.
Tooling Impact
Updates release pipeline templates: Store publishing now uses StoreAppPublish-Private endpoint with separate per-channel publish tasks, fixes changelog URL generation regex, adds Start-PSBootstrap to SDK/global-tools validation, and updates SBConfig.json and image references.
Customer Impact
Regression
REQUIRED: Check exactly one box.
This is not a regression.
Testing
Pipeline/build changes — verified via CI pipeline execution on the backport branch.
Risk
REQUIRED: Check exactly one box.
Build and release pipeline changes from the v7.6.0-preview.5 merge-back. Includes Store publishing improvements (unified StoreAppPublish-Private endpoint, per-channel publish tasks), changelog URL generation fixes, and SDK bootstrap additions. CHANGELOG kept as-is for v7.5.
Merge Conflicts
6 files had conflicts. Resolution: (1) PowerShell-Release-Official.yml — trivial whitespace, took theirs. (2) channelSelection.yml — kept ours (v7.5 has improved PublishToChannels approach). (3) package-create-msix.yml — took theirs (simplified single StoreAppPublish-Private endpoint). (4) release-MSIX-Publish.yml — took theirs (separate LTS/Stable/Preview publish tasks with direct AppID references). (5) release-validate-sdk.yml — took theirs (added Start-PSBootstrap + DOTNET_NOLOGO). (6) CHANGELOG/preview.md — kept ours entirely (v7.6.0-preview.5 changelog doesn't belong on v7.5).