[release/v7.6.1] Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27214
Conversation
…n up PDP-Media (PowerShell#27024) Co-authored-by: Justin Chung <chungjustin@microsoft.com>
There was a problem hiding this comment.
Pull request overview
Backport refactor of the Store packaging/publishing flow to release/v7.6.1 by separating StoreBroker package creation into its own stage/template and updating the Store publish pipeline to consume the new artifact and options.
Changes:
- Added a dedicated
store_packagestage and introduced a newpackage-store-package.ymltemplate to build the StoreBroker package from the signed MSIX bundle. - Updated
release-MSIX-Publish.ymlto download the new store-package artifact and publish withforce/deletePackages/skipPolling. - Removed the legacy inline Store packaging block from
package-create-msix.ymland cleaned up Store PDP metadata.
Reviewed changes
Copilot reviewed 10 out of 18 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| .pipelines/templates/stages/PowerShell-Packages-Stages.yml | Adds a new store_package stage after msixbundle. |
| .pipelines/templates/release-MSIX-Publish.yml | Switches input artifact to Store package output; updates publish task options/conditions. |
| .pipelines/templates/package-store-package.yml | New template to generate StoreBroker package (SBConfig/PDP updates + package creation + artifact output). |
| .pipelines/templates/package-create-msix.yml | Removes inline Store packaging logic; leaves only MSIX bundle creation/signing + artifact upload. |
| .pipelines/store/PDP/PDP/en-US/PDP.xml | Removes screenshot captions and an icon reference from the PDP metadata. |
| .pipelines/NonOfficial/PowerShell-vPack-NonOfficial.yml | Updates template include paths (currently points to a non-existent directory). |
| .pipelines/NonOfficial/PowerShell-Release-NonOfficial.yml | Updates template include paths (currently points to a non-existent directory). |
| .pipelines/NonOfficial/PowerShell-Release-Azure-NonOfficial.yml | Updates template include paths (currently points to a non-existent directory). |
| .pipelines/NonOfficial/PowerShell-Packages-NonOfficial.yml | Updates template include paths (currently points to a non-existent directory). |
| .pipelines/NonOfficial/PowerShell-Coordinated_Packages-NonOfficial.yml | Updates template include paths (currently points to a non-existent directory). |
| - stage: store_package | ||
| displayName: 'Store Package' | ||
| dependsOn: [msixbundle] | ||
| jobs: | ||
| - template: /.pipelines/templates/package-store-package.yml@self |
There was a problem hiding this comment.
The new store_package stage is unconditional, so it will also run in non-official pipelines that consume this stages template (where OfficialBuild is false). That will likely fail due to missing Store variable groups/service connections and is unnecessary for non-official runs. Gate this stage with parameters.OfficialBuild (compile-time if or a stage condition) similar to how signing is gated in package-create-msix.yml.
| - stage: store_package | |
| displayName: 'Store Package' | |
| dependsOn: [msixbundle] | |
| jobs: | |
| - template: /.pipelines/templates/package-store-package.yml@self | |
| - ${{ if parameters.OfficialBuild }}: | |
| - stage: store_package | |
| displayName: 'Store Package' | |
| dependsOn: [msixbundle] | |
| jobs: | |
| - template: /.pipelines/templates/package-store-package.yml@self |
| serviceEndpoint: 'StoreAppPublish-Preview' | ||
| sbConfigPath: '$(SBConfigPath)' | ||
| sourceFolder: '$(StoreBundleDir)' | ||
| contents: '*.msixBundle' | ||
| outSBName: 'PowerShellStorePackage' |
There was a problem hiding this comment.
contents uses *.msixBundle, but the MSIX bundle creation step produces files with the .msixbundle extension. If the Store package task’s glob matching is case-sensitive, this will result in no inputs being picked up. Use the same extension casing as the produced artifacts (e.g., *.msixbundle).
| serviceEndpoint: 'StoreAppPublish-Stable' | ||
| sbConfigPath: '$(SBConfigPath)' | ||
| sourceFolder: '$(StoreBundleDir)' | ||
| contents: '*.msixBundle' | ||
| outSBName: 'PowerShellStorePackage' |
There was a problem hiding this comment.
contents uses *.msixBundle, but the MSIX bundle creation step produces files with the .msixbundle extension. If the Store package task’s glob matching is case-sensitive, this will result in no inputs being picked up. Use the same extension casing as the produced artifacts (e.g., *.msixbundle).
| exit 1 | ||
| } | ||
|
|
||
| Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)" |
There was a problem hiding this comment.
ServiceConnection is set as a pipeline variable but never used in this template. Either remove it to avoid confusion, or use it in the subsequent StoreBroker tasks to avoid duplicating the service endpoint strings.
| Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)" |
| variables: | ||
| - template: ../templates/variables/PowerShell-vPack-Variables.yml | ||
| - template: ./pipelines/templates/variables/PowerShell-vPack-Variables.yml@self | ||
| parameters: | ||
| debug: ${{ parameters.debug }} |
There was a problem hiding this comment.
This template include path points to ./pipelines/templates/..., but this repo’s templates live under .pipelines/templates (note the leading dot). As written, the pipeline will fail at compile time because the referenced file path doesn’t exist. Update the path to ../templates/... (relative) or /.pipelines/templates/...@self (absolute).
|
|
||
| variables: | ||
| - template: ../templates/variables/PowerShell-Release-Azure-Variables.yml | ||
| - template: ./pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self |
There was a problem hiding this comment.
This template include path points to ./pipelines/templates/..., but this repo’s templates live under .pipelines/templates (note the leading dot). As written, the pipeline will fail at compile time because the referenced file path doesn’t exist. Update the path to ../templates/... (relative) or /.pipelines/templates/...@self (absolute).
| - template: ./pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self | |
| - template: /.pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self |
| variables: | ||
| - template: ../templates/variables/PowerShell-Packages-Variables.yml | ||
| - template: ./pipelines/templates/variables/PowerShell-Packages-Variables.yml@self | ||
| parameters: | ||
| debug: ${{ parameters.debug }} |
There was a problem hiding this comment.
This template include path points to ./pipelines/templates/..., but this repo’s templates live under .pipelines/templates (note the leading dot). As written, the pipeline will fail at compile time because the referenced file path doesn’t exist. Update the path to ../templates/... (relative) or /.pipelines/templates/...@self (absolute).
| stages: | ||
| - template: ../templates/stages/PowerShell-Packages-Stages.yml | ||
| - template: ./pipelines/templates/stages/PowerShell-Packages-Stages.yml@self | ||
| parameters: | ||
| OfficialBuild: false |
There was a problem hiding this comment.
This stage template include path points to ./pipelines/templates/..., but this repo’s templates live under .pipelines/templates (note the leading dot). As written, the pipeline will fail at compile time because the referenced file path doesn’t exist. Update the path to ../templates/... (relative) or /.pipelines/templates/...@self (absolute).
| variables: | ||
| - template: ../templates/variables/PowerShell-Coordinated_Packages-Variables.yml | ||
| - template: ./pipelines/templates/variables/PowerShell-Coordinated_Packages-Variables.yml@self | ||
| parameters: | ||
| InternalSDKBlobURL: ${{ parameters.InternalSDKBlobURL }} |
There was a problem hiding this comment.
This template include path points to ./pipelines/templates/..., but this repo’s templates live under .pipelines/templates (note the leading dot). As written, the pipeline will fail at compile time because the referenced file path doesn’t exist. Update the path to ../templates/... (relative) or /.pipelines/templates/...@self (absolute).
| stages: | ||
| - template: ../templates/stages/PowerShell-Coordinated_Packages-Stages.yml | ||
| - template: ./pipelines/templates/stages/PowerShell-Coordinated_Packages-Stages.yml@self | ||
| parameters: | ||
| RUN_WINDOWS: ${{ parameters.RUN_WINDOWS }} |
There was a problem hiding this comment.
This stage template include path points to ./pipelines/templates/..., but this repo’s templates live under .pipelines/templates (note the leading dot). As written, the pipeline will fail at compile time because the referenced file path doesn’t exist. Update the path to ../templates/... (relative) or /.pipelines/templates/...@self (absolute).
Backport of #27024 to release/v7.6.1
Triggered by @daxian-dbw on behalf of @jshigetomi
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
Backports the store packaging pipeline refactor required to keep the release/v7.6.1 store publishing flow aligned with the current packaging process, including the dedicated store package template and updated publish inputs.
Customer Impact
Regression
REQUIRED: Check exactly one box.
This is not a regression.
Testing
Verified by cherry-picking onto release/v7.6.1, resolving the single conflict in .pipelines/templates/package-create-msix.yml by accepting the incoming PR change that removes the obsolete inline Store packaging block, and confirming the worktree is clean after the cherry-pick. No local pipeline run was performed; CI on the backport PR will validate the workflow end to end.
Risk
REQUIRED: Check exactly one box.
High risk because this changes release packaging and store publishing pipeline definitions used for official builds. The change is still appropriate for backport because it is scoped to packaging infrastructure and aligns the release branch with a change already merged on main.
Merge Conflicts
Conflict in .pipelines/templates/package-create-msix.yml. The release branch still had the legacy inline Store package creation steps, while the original PR moved that logic into a dedicated package-store-package template and stage. Resolved by accepting the incoming PR change and removing the obsolete inline block from package-create-msix.yml.