Skip to content

Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27024

Open
jshigetomi wants to merge 1 commit intoPowerShell:masterfrom
jshigetomi:updateStoreStages
Open

Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27024
jshigetomi wants to merge 1 commit intoPowerShell:masterfrom
jshigetomi:updateStoreStages

Conversation

@jshigetomi
Copy link
Collaborator

@jshigetomi jshigetomi commented Mar 13, 2026

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_package stage 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:

  • Added a new store_package stage to .pipelines/PowerShell-Packages-Official.yml that runs after the MSIX bundle is created, using a dedicated template for Store package creation.
  • Introduced a new template, .pipelines/templates/package-store-package.yml, which encapsulates all logic for StoreBroker package creation, configuration updates, and artifact uploads.
  • Removed Store-specific logic and variables from .pipelines/templates/package-create-msix.yml, moving them to the new dedicated template. [1] [2]

Store publish process improvements:

  • Updated the MSIX publish pipeline (release-MSIX-Publish.yml) to consume the new Store package artifact and use new options like force, deletePackages, and skipPolling for more robust and reliable publishing. [1] [2]

Store metadata and assets cleanup:

  • Removed unused screenshot captions and icon references from the Store PDP XML file, likely as part of Store submission requirements or to streamline the package metadata.

PR Context

Updates to store release process after releasing 7.4.14 and 7.5.5

PR Checklist

@jshigetomi jshigetomi added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Mar 13, 2026
@jshigetomi jshigetomi marked this pull request as ready for review March 13, 2026 16:02
@jshigetomi jshigetomi requested a review from a team as a code owner March 13, 2026 16:02
Copilot AI review requested due to automatic review settings March 13, 2026 16:02
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_package stage and new package-store-package.yml template to create/upload the StoreBroker package artifact.
  • Updated release-MSIX-Publish.yml to 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.yml and 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.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_package stage and a dedicated package-store-package.yml template to build/upload the StoreBroker JSON+ZIP artifact.
  • Updates release-MSIX-Publish.yml to publish from the new Store package artifact and adds publish-task options (force/deletePackages/skipPolling).
  • Removes Store-specific logic from package-create-msix.yml and 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.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_package stage to the official packages pipeline and introduced a new package-store-package.yml template to build/upload the StoreBroker package artifact.
  • Updated release-MSIX-Publish.yml to download the new Store package artifact and publish with additional options (force, deletePackages, skipPolling).
  • Removed Store-specific logic from package-create-msix.yml and 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_package is a new stage, but upload still has an explicit dependsOn list that omits it. This allows upload (and then validatePackages) to run even if store_package is 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, add store_package to the upload.dependsOn list (or make upload depend on store_package instead of msixbundle).
    - 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:

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_package stage to the official packages pipeline and introduced a new package-store-package.yml template to build/upload the StoreBroker submission package.
  • Updated release-MSIX-Publish.yml to 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.

Comment on lines +63 to +75
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"
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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)'

Copilot uses AI. Check for mistakes.
exit 1
}

Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)"
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)"

Copilot uses AI. Check for mistakes.
Comment on lines 108 to +110
- 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')))
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Comment on lines 124 to +126
- 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'))
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BackPort-7.4.x-Consider BackPort-7.5.x-Consider BackPort-7.6.x-Consider CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants