[release/v7.5.6] Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27225
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
Refactors the release/v7.5.6 Store packaging/publishing pipelines by moving StoreBroker package creation into a dedicated template/stage, updating the Store publish job to consume the new artifact and skip polling, and cleaning up Store PDP metadata/assets references.
Changes:
- Added a new
store_packagestage that runs aftermsixbundleand executes the new Store package creation template. - Updated Store publish (
release-MSIX-Publish.yml) to download the Store package artifact and publish withforce/deletePackages/skipPolling. - Removed StoreBroker/package-creation logic from
package-create-msix.ymland cleaned up PDP XML asset references.
Reviewed changes
Copilot reviewed 10 out of 18 changed files in this pull request and generated 8 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/package-store-package.yml |
New job template that downloads the signed msixbundle and creates/upload StoreBroker package artifacts. |
.pipelines/templates/release-MSIX-Publish.yml |
Publishes using the new Store package artifact and updated publish options (incl. skip polling). |
.pipelines/templates/package-create-msix.yml |
Removes in-template Store package creation so it only builds/signs/uploads msixbundle artifacts. |
.pipelines/store/PDP/PDP/en-US/PDP.xml |
Removes screenshot captions and icon references (PDP asset cleanup). |
.pipelines/NonOfficial/PowerShell-vPack-NonOfficial.yml |
Updates template paths (currently incorrect). |
.pipelines/NonOfficial/PowerShell-Release-NonOfficial.yml |
Updates template paths (currently incorrect). |
.pipelines/NonOfficial/PowerShell-Release-Azure-NonOfficial.yml |
Updates template paths (currently incorrect). |
.pipelines/NonOfficial/PowerShell-Packages-NonOfficial.yml |
Updates template paths (currently incorrect). |
.pipelines/NonOfficial/PowerShell-Coordinated_Packages-NonOfficial.yml |
Updates template paths (currently incorrect). |
Comments suppressed due to low confidence (5)
.pipelines/NonOfficial/PowerShell-vPack-NonOfficial.yml:40
- This template path is invalid in this repo: there is no top-level
pipelines/directory (templates live under.pipelines/templates). Update the reference (e.g.,/.pipelines/templates/variables/PowerShell-vPack-Variables.yml@self) so the NonOfficial pipeline can load its variables template.
variables:
- template: ./pipelines/templates/variables/PowerShell-vPack-Variables.yml@self
parameters:
debug: ${{ parameters.debug }}
ReleaseTagVar: ${{ parameters.ReleaseTagVar }}
netiso: ${{ parameters.netiso }}
.pipelines/NonOfficial/PowerShell-Packages-NonOfficial.yml:38
- This variables template reference points to
./pipelines/templates/..., but templates live under.pipelines/templates/...in this repo. Update the path to avoid breaking the NonOfficial packages pipeline.
variables:
- template: ./pipelines/templates/variables/PowerShell-Packages-Variables.yml@self
parameters:
debug: ${{ parameters.debug }}
ForceAzureBlobDelete: ${{ parameters.ForceAzureBlobDelete }}
ReleaseTagVar: ${{ parameters.ReleaseTagVar }}
.pipelines/NonOfficial/PowerShell-Packages-NonOfficial.yml:98
- This stage template reference uses
./pipelines/templates/..., but the correct directory is.pipelines/templates/.... Fix this path or the NonOfficial packages pipeline will fail to load its stages.
tsaOptionsFile: .config\tsaoptions.json
stages:
- template: ./pipelines/templates/stages/PowerShell-Packages-Stages.yml@self
parameters:
OfficialBuild: false
.pipelines/NonOfficial/PowerShell-Coordinated_Packages-NonOfficial.yml:52
- This variables template path uses
./pipelines/templates/..., but the repo structure is.pipelines/templates/...(nopipelines/directory). Update the reference so this pipeline can resolve the variables template.
variables:
- template: ./pipelines/templates/variables/PowerShell-Coordinated_Packages-Variables.yml@self
parameters:
InternalSDKBlobURL: ${{ parameters.InternalSDKBlobURL }}
ReleaseTagVar: ${{ parameters.ReleaseTagVar }}
SKIP_SIGNING: ${{ parameters.SKIP_SIGNING }}
.pipelines/NonOfficial/PowerShell-Coordinated_Packages-NonOfficial.yml:97
- This stage template path uses
./pipelines/templates/..., but templates are stored under.pipelines/templates/...in this repo. Fix the reference to prevent template resolution failures.
stages:
- template: ./pipelines/templates/stages/PowerShell-Coordinated_Packages-Stages.yml@self
parameters:
RUN_WINDOWS: ${{ parameters.RUN_WINDOWS }}
RUN_TEST_AND_RELEASE: ${{ parameters.RUN_TEST_AND_RELEASE }}
OfficialBuild: false
| inputs: | ||
| serviceEndpoint: 'StoreAppPublish-Preview' | ||
| sbConfigPath: '$(SBConfigPath)' | ||
| sourceFolder: '$(StoreBundleDir)' | ||
| contents: '*.msixBundle' | ||
| outSBName: 'PowerShellStorePackage' | ||
| pdpPath: '$(System.DefaultWorkingDirectory)/PowerShell/.pipelines/store/PDP/PDP' |
There was a problem hiding this comment.
contents is set to *.msixBundle, but earlier steps locate/copy .msixbundle files (lowercase). If the task's glob matching is case-sensitive, it will fail to find the bundle and produce no SBOutDir output. Use *.msixbundle to match the produced filename/extension consistently.
| inputs: | ||
| serviceEndpoint: 'StoreAppPublish-Stable' | ||
| sbConfigPath: '$(SBConfigPath)' | ||
| sourceFolder: '$(StoreBundleDir)' | ||
| contents: '*.msixBundle' | ||
| outSBName: 'PowerShellStorePackage' | ||
| pdpPath: '$(System.DefaultWorkingDirectory)/PowerShell/.pipelines/store/PDP/PDP' |
There was a problem hiding this comment.
Same issue as above: contents: '*.msixBundle' may not match the .msixbundle file extension consistently. Prefer *.msixbundle here as well.
| exit 1 | ||
| } | ||
|
|
||
| Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)" |
There was a problem hiding this comment.
The ServiceConnection variable is set but is not referenced anywhere else in this template (the store-package tasks hardcode serviceEndpoint). Either remove this setvariable to avoid confusion, or use $(ServiceConnection) in the subsequent tasks so the selected endpoint is actually honored.
| Write-Host "##vso[task.setvariable variable=ServiceConnection]$($config.ServiceEndpoint)" |
| tsaOptionsFile: .config/tsaoptions.json | ||
| stages: | ||
| - template: ../templates/stages/PowerShell-vPack-Stages.yml | ||
| - template: ./pipelines/templates/stages/PowerShell-vPack-Stages.yml@self | ||
| parameters: | ||
| createVPack: ${{ parameters.createVPack }} | ||
| vPackName: ${{ parameters.vPackName }} |
There was a problem hiding this comment.
This stage template reference uses ./pipelines/templates/..., but the repo structure is .pipelines/templates/... (no pipelines/ directory). Fix the path (for example /.pipelines/templates/stages/PowerShell-vPack-Stages.yml@self) or the pipeline will fail template resolution.
|
|
||
| variables: | ||
| - template: ../templates/variables/PowerShell-Release-Variables.yml | ||
| - template: ./pipelines/templates/variables/PowerShell-Release-Variables.yml@self | ||
| parameters: | ||
| debug: ${{ parameters.debug }} | ||
| ReleaseTagVar: ${{ parameters.ReleaseTagVar }} |
There was a problem hiding this comment.
This variables template path uses ./pipelines/templates/..., but the repository contains .pipelines/templates/... (no pipelines/ directory). Update this reference so the NonOfficial release pipeline can resolve the template.
|
|
||
| stages: | ||
| - template: ../templates/stages/PowerShell-Release-Stages.yml | ||
| - template: ./pipelines/templates/stages/PowerShell-Release-Stages.yml@self | ||
| parameters: | ||
| releaseEnvironment: Test | ||
| SkipPublish: ${{ parameters.SkipPublish }} |
There was a problem hiding this comment.
This stage template path uses ./pipelines/templates/..., but templates are under .pipelines/templates/... in this repo. Fix the reference (e.g. /.pipelines/templates/stages/PowerShell-Release-Stages.yml@self) to avoid pipeline failures.
|
|
||
| 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 variables template path uses ./pipelines/templates/..., but there is no pipelines/ directory in the repo (templates are under .pipelines/templates). Fix the path so this NonOfficial EV2 pipeline can resolve the template.
| - template: ./pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self | |
| - template: /.pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self |
| - stage: store_package | ||
| displayName: 'Store Package' | ||
| dependsOn: [msixbundle] | ||
| jobs: | ||
| - template: /.pipelines/templates/package-store-package.yml@self |
There was a problem hiding this comment.
store_package stage is added unconditionally to the shared Packages stages template, which is used by both Official and NonOfficial package pipelines. This stage consumes the 'Store Publish Variables' group and Store service connections, which are typically unavailable/undesired in NonOfficial runs and can cause those pipelines to fail. Make this stage conditional on parameters.OfficialBuild (or add an explicit parameter like EnableStorePackaging) so it only runs for official builds.
| - stage: store_package | |
| displayName: 'Store Package' | |
| dependsOn: [msixbundle] | |
| jobs: | |
| - template: /.pipelines/templates/package-store-package.yml@self | |
| - ${{ if eq(parameters.OfficialBuild, true) }}: | |
| - stage: store_package | |
| displayName: 'Store Package' | |
| dependsOn: [msixbundle] | |
| jobs: | |
| - template: /.pipelines/templates/package-store-package.yml@self |
Backport of #27024 to release/v7.5.6
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
Refactors the store packaging and publish pipeline on release/v7.5.6 by separating StoreBroker package creation into its own template and stage, simplifying the MSIX pipeline and improving store publish reliability.
Customer Impact
Regression
REQUIRED: Check exactly one box.
This is not a regression.
Testing
Cherry-pick completed on release/v7.5.6 after resolving one conflict in .pipelines/templates/package-create-msix.yml. Validation included confirming that package-create-msix.yml retains only msix bundle creation responsibilities, that the new package-store-package.yml template is present, and that backport PR CI will verify the full release pipeline behavior.
Risk
REQUIRED: Check exactly one box.
Medium risk because the change restructures release packaging and store publication workflows across multiple pipeline files, but the scope is limited to build/release infrastructure and the conflict resolution preserved the PR intent by removing obsolete in-template store package creation logic now moved to the new template.
Merge Conflicts
Conflict in .pipelines/templates/package-create-msix.yml. Cause: release/v7.5.6 still contained the older in-template StoreBroker package creation block, while PR #27024 moves that logic into the new .pipelines/templates/package-store-package.yml template. Resolution: removed the obsolete store packaging block from package-create-msix.yml, kept the msix bundle creation/sign/upload steps intact, and relied on the newly added template and stage changes from the cherry-pick for store package creation.