Skip to content

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

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

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

Conversation

@daxian-dbw
Copy link
Copy Markdown
Member

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

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

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

  • Customer reported
  • Found internally

Regression

REQUIRED: Check exactly one box.

  • Yes
  • No

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
  • Medium
  • Low

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.

…n up PDP-Media (PowerShell#27024)

Co-authored-by: Justin Chung <chungjustin@microsoft.com>
Copilot AI review requested due to automatic review settings April 9, 2026 05:51
@daxian-dbw daxian-dbw requested review from a team and jshigetomi as code owners April 9, 2026 05:51
@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
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

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_package stage and introduced a new package-store-package.yml template to build the StoreBroker package from the signed MSIX bundle.
  • Updated release-MSIX-Publish.yml to download the new store-package artifact and publish with force/deletePackages/skipPolling.
  • Removed the legacy inline Store packaging block from package-create-msix.yml and 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).

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.

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.

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

Copilot uses AI. Check for mistakes.
Comment on lines +192 to +196
serviceEndpoint: 'StoreAppPublish-Preview'
sbConfigPath: '$(SBConfigPath)'
sourceFolder: '$(StoreBundleDir)'
contents: '*.msixBundle'
outSBName: 'PowerShellStorePackage'
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 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).

Copilot uses AI. Check for mistakes.
Comment on lines +203 to +207
serviceEndpoint: 'StoreAppPublish-Stable'
sbConfigPath: '$(SBConfigPath)'
sourceFolder: '$(StoreBundleDir)'
contents: '*.msixBundle'
outSBName: 'PowerShellStorePackage'
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 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).

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.

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.

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

Copilot uses AI. Check for mistakes.
Comment on lines 35 to 38
variables:
- template: ../templates/variables/PowerShell-vPack-Variables.yml
- template: ./pipelines/templates/variables/PowerShell-vPack-Variables.yml@self
parameters:
debug: ${{ parameters.debug }}
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 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).

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

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 33 to 36
variables:
- template: ../templates/variables/PowerShell-Packages-Variables.yml
- template: ./pipelines/templates/variables/PowerShell-Packages-Variables.yml@self
parameters:
debug: ${{ parameters.debug }}
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 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).

Copilot uses AI. Check for mistakes.
Comment on lines 94 to 97
stages:
- template: ../templates/stages/PowerShell-Packages-Stages.yml
- template: ./pipelines/templates/stages/PowerShell-Packages-Stages.yml@self
parameters:
OfficialBuild: false
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 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).

Copilot uses AI. Check for mistakes.
Comment on lines 47 to 50
variables:
- template: ../templates/variables/PowerShell-Coordinated_Packages-Variables.yml
- template: ./pipelines/templates/variables/PowerShell-Coordinated_Packages-Variables.yml@self
parameters:
InternalSDKBlobURL: ${{ parameters.InternalSDKBlobURL }}
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 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).

Copilot uses AI. Check for mistakes.
Comment on lines 92 to 95
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 }}
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 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).

Copilot uses AI. Check for mistakes.
@daxian-dbw daxian-dbw merged commit 94fafbd into PowerShell:release/v7.6.1 Apr 9, 2026
34 checks passed
@daxian-dbw daxian-dbw deleted the backport/release/v7.6.1/27024-45a80d9a4 branch April 9, 2026 16:54
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