Skip to content

[release/v7.5.6] Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27225

Merged
daxian-dbw merged 2 commits intoPowerShell:release/v7.5.6from
daxian-dbw:backport/release/v7.5.6/27024-45a80d9a4
Apr 9, 2026
Merged

[release/v7.5.6] Separate Store Package Creation, Skip Polling for Store Publish, Clean up PDP-Media#27225
daxian-dbw merged 2 commits intoPowerShell:release/v7.5.6from
daxian-dbw:backport/release/v7.5.6/27024-45a80d9a4

Conversation

@daxian-dbw
Copy link
Copy Markdown
Member

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

  • Required tooling change
  • Optional tooling change (include reasoning)

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

  • Customer reported
  • Found internally

Regression

REQUIRED: Check exactly one box.

  • Yes
  • No

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.

  • High
  • Medium
  • Low

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.

…n up PDP-Media (PowerShell#27024)

Co-authored-by: Justin Chung <chungjustin@microsoft.com>
@daxian-dbw daxian-dbw requested a review from a team as a code owner April 9, 2026 06:36
@daxian-dbw daxian-dbw added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Apr 9, 2026
Copilot AI review requested due to automatic review settings April 9, 2026 06:36
Copy link
Copy Markdown
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 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_package stage that runs after msixbundle and executes the new Store package creation template.
  • Updated Store publish (release-MSIX-Publish.yml) to download the Store package artifact and publish with force/deletePackages/skipPolling.
  • Removed StoreBroker/package-creation logic from package-create-msix.yml and 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/... (no pipelines/ 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

Comment on lines +191 to +197
inputs:
serviceEndpoint: 'StoreAppPublish-Preview'
sbConfigPath: '$(SBConfigPath)'
sourceFolder: '$(StoreBundleDir)'
contents: '*.msixBundle'
outSBName: 'PowerShellStorePackage'
pdpPath: '$(System.DefaultWorkingDirectory)/PowerShell/.pipelines/store/PDP/PDP'
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
Comment on lines +202 to +208
inputs:
serviceEndpoint: 'StoreAppPublish-Stable'
sbConfigPath: '$(SBConfigPath)'
sourceFolder: '$(StoreBundleDir)'
contents: '*.msixBundle'
outSBName: 'PowerShellStorePackage'
pdpPath: '$(System.DefaultWorkingDirectory)/PowerShell/.pipelines/store/PDP/PDP'
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

Same issue as above: contents: '*.msixBundle' may not match the .msixbundle file extension consistently. Prefer *.msixbundle here as well.

Copilot uses AI. Check for mistakes.
exit 1
}

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

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

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.

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

Copilot uses AI. Check for mistakes.
Comment on lines 83 to 88
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 }}
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
Comment on lines 34 to 39

variables:
- template: ../templates/variables/PowerShell-Release-Variables.yml
- template: ./pipelines/templates/variables/PowerShell-Release-Variables.yml@self
parameters:
debug: ${{ parameters.debug }}
ReleaseTagVar: ${{ parameters.ReleaseTagVar }}
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
Comment on lines 99 to 104

stages:
- template: ../templates/stages/PowerShell-Release-Stages.yml
- template: ./pipelines/templates/stages/PowerShell-Release-Stages.yml@self
parameters:
releaseEnvironment: Test
SkipPublish: ${{ parameters.SkipPublish }}
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.

variables:
- template: ../templates/variables/PowerShell-Release-Azure-Variables.yml
- template: ./pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
- template: ./pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self
- template: /.pipelines/templates/variables/PowerShell-Release-Azure-Variables.yml@self

Copilot uses AI. Check for mistakes.
Comment on lines +176 to +180
- stage: store_package
displayName: 'Store Package'
dependsOn: [msixbundle]
jobs:
- template: /.pipelines/templates/package-store-package.yml@self
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

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

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.

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

Copilot uses AI. Check for mistakes.
@daxian-dbw daxian-dbw merged commit 74f2550 into PowerShell:release/v7.5.6 Apr 9, 2026
33 checks passed
@daxian-dbw daxian-dbw deleted the backport/release/v7.5.6/27024-45a80d9a4 branch April 9, 2026 17:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

4 participants