Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27024
Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27024jshigetomi wants to merge 1 commit intoPowerShell:masterfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Refactors the Microsoft Store release pipeline to separate StoreBroker package creation into its own stage/template, and updates the publish flow to consume that new artifact while simplifying Store PDP metadata.
Changes:
- Added a dedicated
store_packagestage and newpackage-store-package.ymltemplate to create/upload the StoreBroker package artifact. - Updated
release-MSIX-Publish.ymlto publish from the new Store package artifact and use additional publish options (force/deletePackages/skipPolling). - Removed Store package creation/config manipulation steps from
package-create-msix.ymland cleaned up the Store PDP XML metadata.
Reviewed changes
Copilot reviewed 5 out of 13 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
.pipelines/templates/release-MSIX-Publish.yml |
Switches publish input artifact to the new Store package output and adds publish task options. |
.pipelines/templates/package-store-package.yml |
New job template that downloads the signed msixbundle, updates PDP/SBConfig, creates StoreBroker package, and uploads SBOutDir. |
.pipelines/templates/package-create-msix.yml |
Removes Store-specific variable group and Store package creation steps from MSIX creation. |
.pipelines/store/PDP/PDP/en-US/PDP.xml |
Removes screenshot captions and an icon reference from the PDP listing XML. |
.pipelines/PowerShell-Packages-Official.yml |
Introduces the new store_package stage after msixbundle. |
There was a problem hiding this comment.
Pull request overview
Refactors the Store publishing flow by separating StoreBroker package creation into its own pipeline stage/template, updating the publish template to consume the new artifact, and simplifying Store PDP metadata.
Changes:
- Introduces a new
store_packagestage and a dedicatedpackage-store-package.ymltemplate to build/upload the StoreBroker JSON+ZIP artifact. - Updates
release-MSIX-Publish.ymlto publish from the new Store package artifact and adds publish-task options (force/deletePackages/skipPolling). - Removes Store-specific logic from
package-create-msix.ymland cleans up PDP metadata entries.
Reviewed changes
Copilot reviewed 5 out of 13 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
.pipelines/templates/release-MSIX-Publish.yml |
Switches input artifact to the Store package artifact and updates Store publish task inputs/behavior. |
.pipelines/templates/package-store-package.yml |
New template encapsulating StoreBroker package creation/config updates and artifact upload. |
.pipelines/templates/package-create-msix.yml |
Removes StoreBroker creation/config logic from MSIX bundle creation job. |
.pipelines/store/PDP/PDP/en-US/PDP.xml |
Removes screenshot captions and an icon reference from PDP metadata. |
.pipelines/PowerShell-Packages-Official.yml |
Adds store_package stage after msixbundle to produce the new artifact. |
There was a problem hiding this comment.
Pull request overview
Refactors the Store package creation/publish flow in the official packaging pipelines by separating StoreBroker package creation into its own stage/template, and updating the release publish template to consume the new artifact and publishing options.
Changes:
- Added a dedicated
store_packagestage to the official packages pipeline and introduced a newpackage-store-package.ymltemplate to build/upload the StoreBroker package artifact. - Updated
release-MSIX-Publish.ymlto download the new Store package artifact and publish with additional options (force,deletePackages,skipPolling). - Removed Store-specific logic from
package-create-msix.ymland simplified Store PDP metadata.
Reviewed changes
Copilot reviewed 5 out of 13 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.pipelines/templates/release-MSIX-Publish.yml |
Switches the downloaded artifact to the Store package output and updates Store publish task options/conditions. |
.pipelines/templates/package-store-package.yml |
New template that creates the StoreBroker package from the signed .msixbundle and publishes it as a pipeline artifact. |
.pipelines/templates/package-create-msix.yml |
Removes StoreBroker creation/config update logic from MSIX bundle creation. |
.pipelines/store/PDP/PDP/en-US/PDP.xml |
Removes screenshot captions and an additional icon reference from the Store PDP metadata. |
.pipelines/PowerShell-Packages-Official.yml |
Adds the new store_package stage that runs after msixbundle. |
Comments suppressed due to low confidence (1)
.pipelines/PowerShell-Packages-Official.yml:303
store_packageis a new stage, butuploadstill has an explicitdependsOnlist that omits it. This allowsupload(and thenvalidatePackages) to run even ifstore_packageis still running or later fails, which can result in partially-published artifacts before the pipeline ultimately fails. If Store package creation is a required part of the official packaging run, addstore_packageto theupload.dependsOnlist (or makeuploaddepend onstore_packageinstead ofmsixbundle).
- stage: store_package
displayName: 'Store Package'
dependsOn: [msixbundle]
jobs:
- template: /.pipelines/templates/package-store-package.yml@self
- stage: upload
displayName: 'Upload'
dependsOn: [prep, mac_package, windows_package_sign, linux_package, nupkg, msixbundle] # prep needed for BuildInfo JSON
jobs:
86cae98 to
fe0fcfd
Compare
There was a problem hiding this comment.
Pull request overview
Refactors the Store package creation/publish flow in the release pipelines by separating StoreBroker package generation into its own stage/template, and updating the Store publish template to consume the new artifact and new publish options. Also trims Store PDP metadata that referenced screenshots/icon assets.
Changes:
- Added a dedicated
store_packagestage to the official packages pipeline and introduced a newpackage-store-package.ymltemplate to build/upload the StoreBroker submission package. - Updated
release-MSIX-Publish.ymlto download the new Store package artifact and publish with additional Store publish task options (and skip polling). - Removed Store-specific config/package-creation steps from the MSIX bundle creation template; removed screenshot captions and icon reference from
PDP.xml.
Reviewed changes
Copilot reviewed 5 out of 13 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
.pipelines/templates/release-MSIX-Publish.yml |
Switches input artifact to Store package output and updates Store publish task inputs/conditions. |
.pipelines/templates/package-store-package.yml |
New template encapsulating StoreBroker package creation, PDP/SBConfig updates, and artifact upload. |
.pipelines/templates/package-create-msix.yml |
Removes StoreBroker/PDP/SBConfig logic from MSIX creation stage to keep responsibilities separated. |
.pipelines/store/PDP/PDP/en-US/PDP.xml |
Removes screenshot captions and an icon reference from Store PDP metadata. |
.pipelines/PowerShell-Packages-Official.yml |
Adds the new store_package stage that runs after msixbundle. |
| ServiceEndpoint = "StoreAppPublish-Stable" | ||
| } | ||
| 'Stable' = @{ | ||
| AppStoreName = 'PowerShell' | ||
| ProductId = '$(productId-Stable)' | ||
| AppId = '$(AppID-Stable)' | ||
| ServiceEndpoint = "StoreAppPublish-Stable" | ||
| } | ||
| 'Preview' = @{ | ||
| AppStoreName = 'PowerShell (Preview)' | ||
| ProductId = '$(productId-Preview)' | ||
| AppId = '$(AppID-Preview)' | ||
| ServiceEndpoint = "StoreAppPublish-Preview" |
There was a problem hiding this comment.
ServiceEndpoint is defined in each $channelConfigs entry, but in this template it's only used to set the ServiceConnection variable later (which is currently unused). If the publish/package tasks must keep serviceEndpoint hardcoded, consider removing ServiceEndpoint from the config map to avoid dead/duplicated configuration.
| ServiceEndpoint = "StoreAppPublish-Stable" | |
| } | |
| 'Stable' = @{ | |
| AppStoreName = 'PowerShell' | |
| ProductId = '$(productId-Stable)' | |
| AppId = '$(AppID-Stable)' | |
| ServiceEndpoint = "StoreAppPublish-Stable" | |
| } | |
| 'Preview' = @{ | |
| AppStoreName = 'PowerShell (Preview)' | |
| ProductId = '$(productId-Preview)' | |
| AppId = '$(AppID-Preview)' | |
| ServiceEndpoint = "StoreAppPublish-Preview" | |
| } | |
| 'Stable' = @{ | |
| AppStoreName = 'PowerShell' | |
| ProductId = '$(productId-Stable)' | |
| AppId = '$(AppID-Stable)' | |
| } | |
| 'Preview' = @{ | |
| AppStoreName = 'PowerShell (Preview)' | |
| ProductId = '$(productId-Preview)' | |
| AppId = '$(AppID-Preview)' |
| exit 1 | ||
| } | ||
|
|
||
| Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)" |
There was a problem hiding this comment.
This sets a ServiceConnection pipeline variable, but nothing in this template reads $(ServiceConnection) (the store-package tasks use hardcoded serviceEndpoint values). Consider removing this setvariable to avoid confusion and keep the channel selection logic in one place.
| Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)" |
| - task: MS-RDX-MRO.windows-store-publish.publish-task.store-publish@3 | ||
| displayName: 'Publish StoreBroker Package (Stable/LTS)' | ||
| condition: and(ne('${{ parameters.skipMSIXPublish }}', 'true'), or(eq(variables['STABLE'], 'true'), eq(variables['LTS'], 'true'))) | ||
| continueOnError: true | ||
| condition: and(not(${{ parameters.skipMSIXPublish }}), or(eq(variables['STABLE'], 'true'), eq(variables['LTS'], 'true'))) |
There was a problem hiding this comment.
continueOnError: true was removed from the Store publish task. This changes behavior from “Store publish failure doesn’t fail the job” to “Store publish failure fails the job/pipeline”. If this pipeline is expected to be resilient to transient Store publish issues, consider restoring continueOnError (or otherwise documenting/handling the failure mode).
| - task: MS-RDX-MRO.windows-store-publish.publish-task.store-publish@3 | ||
| displayName: 'Publish StoreBroker Package (Preview)' | ||
| condition: and(ne('${{ parameters.skipMSIXPublish }}', 'true'), eq(variables['PREVIEW'], 'true')) | ||
| continueOnError: true | ||
| condition: and(not(${{ parameters.skipMSIXPublish }}), eq(variables['PREVIEW'], 'true')) |
There was a problem hiding this comment.
Same as above: removing continueOnError: true here makes a transient Store publish failure fail the entire job/pipeline. If that’s not intended, restore continueOnError or add explicit retry/error-handling around this publish step.
PR Summary
This pull request refactors the PowerShell Store package publishing pipeline to improve modularity, maintainability, and reliability. The main change is the introduction of a dedicated
store_packagestage and a new template for StoreBroker package creation, which centralizes and simplifies the logic for preparing and uploading Store packages. Related tasks are moved out of the MSIX creation pipeline, and Store publish steps are updated to use the new artifact and additional options for more robust publishing.Pipeline refactoring and modularization:
store_packagestage to.pipelines/PowerShell-Packages-Official.ymlthat runs after the MSIX bundle is created, using a dedicated template for Store package creation..pipelines/templates/package-store-package.yml, which encapsulates all logic for StoreBroker package creation, configuration updates, and artifact uploads..pipelines/templates/package-create-msix.yml, moving them to the new dedicated template. [1] [2]Store publish process improvements:
release-MSIX-Publish.yml) to consume the new Store package artifact and use new options likeforce,deletePackages, andskipPollingfor more robust and reliable publishing. [1] [2]Store metadata and assets cleanup:
PR Context
Updates to store release process after releasing 7.4.14 and 7.5.5
PR Checklist
.h,.cpp,.cs,.ps1and.psm1files have the correct copyright header