Skip to content

[release/v7.4] Add rebuild branch support with conditional MSIX signing#26418

Merged
TravisEz13 merged 2 commits intoPowerShell:release/v7.4from
TravisEz13:backport/release/v7.4/26415-8b7e493dd
Nov 11, 2025
Merged

[release/v7.4] Add rebuild branch support with conditional MSIX signing#26418
TravisEz13 merged 2 commits intoPowerShell:release/v7.4from
TravisEz13:backport/release/v7.4/26415-8b7e493dd

Conversation

@TravisEz13
Copy link
Member

@TravisEz13 TravisEz13 commented Nov 11, 2025

Backport of #26415 to release/v7.4

Triggered by @TravisEz13 on behalf of @TravisEz13

Original CL Label: CL-BuildPackaging

/cc @PowerShell/powershell-maintainers

Impact

Tooling Impact

  • Required tooling change

Adds rebuild branch support with conditional MSIX signing. This allows rebuild branches (e.g., rebuild/v7.4.13-rebuild.5) to be treated as preview builds and skip LTS package generation and MSIX signing appropriately.

Regression

  • No

This is a new feature to support rebuild branches.

Testing

Verified by:

  1. Cherry-picking changes to release/v7.4 branch
  2. Resolving merge conflicts to match release branch code patterns
  3. Ensuring rebuild branch detection logic is properly integrated

Risk

  • High
  • Medium
  • Low

High risk due to changes across multiple pipeline templates affecting build, packaging, and release processes. However, changes only activate for rebuild branches (detected via branch naming pattern) and should not affect normal release or preview builds.

Merge Conflicts

Multiple files had conflicts during cherry-pick due to differences in code patterns between master and release/v7.4:

.pipelines/templates/channelSelection.yml

Conflict: Metadata path difference
Root Cause: release/v7.4 uses $repoRoot/tools/metadata.json while master uses /PowerShell/tools/metadata.json
Resolution: Used release branch path (``) to maintain consistency with release/v7.4 codebase

Conflict: Variable name **Root Cause**: Line had duplicated instead of reading both and
Resolution: Fixed to properly read both .LTSRelease.Latest and .StableRelease.Latest

.pipelines/templates/linux-package-build.yml

Conflict: LTS package check pattern
Root Cause: release/v7.4 uses -eq 'True' comparison while master uses boolean -and
Resolution: Combined both patterns: (.LTSRelease.Package -eq 'True') -and -not to maintain release branch's string comparison while adding rebuild branch check

.pipelines/templates/mac-package-build.yml

Conflict: Same LTS package check pattern as linux
Resolution: Applied same combined pattern as linux-package-build.yml

.pipelines/templates/package-create-msix.yml

Conflict: XML node selection approach
Root Cause: release/v7.4 used simpler XPath (//AppStoreName[@_locID]) and InnerText modification, while master uses namespace manager and SetAttribute
Resolution: Accepted master's namespace manager approach as it's more robust for handling XML with default namespaces

.pipelines/templates/windows-package-build.yml

Conflict: Same LTS package check pattern as other package builds
Resolution: Applied same combined pattern: (.LTSRelease.Package -eq 'True') -and -not

All conflicts resolved by preserving release/v7.4 code patterns where possible while integrating the new rebuild branch detection logic from the PR.

Copilot AI review requested due to automatic review settings November 11, 2025 01:14
@TravisEz13 TravisEz13 requested a review from a team as a code owner November 11, 2025 01:14
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

This PR backports rebuild branch support from master to the release/v7.4 branch. The changes enable rebuild branches (e.g., rebuild/v7.4.13-rebuild.5) to be treated as preview builds, skipping LTS package generation and MSIX signing where appropriate.

Key changes:

  • Adds a new rebuild-branch-check.yml template to detect rebuild branches via regex pattern matching
  • Updates package build templates to skip LTS package generation for rebuild branches
  • Implements conditional MSIX signing based on the OfficialBuild parameter
  • Modifies channelSelection.yml to force preview mode for rebuild branches

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
.pipelines/templates/rebuild-branch-check.yml New template that detects rebuild branches and sets an output variable
.pipelines/templates/windows-package-build.yml Integrates rebuild branch check to skip LTS packages
.pipelines/templates/linux-package-build.yml Integrates rebuild branch check to skip LTS packages
.pipelines/templates/mac-package-build.yml Integrates rebuild branch check to skip LTS packages
.pipelines/templates/channelSelection.yml Forces preview mode for rebuild branches with duplicated regex check
.pipelines/templates/package-create-msix.yml Adds conditional MSIX signing and improved XML handling with namespace manager
.pipelines/PowerShell-Packages-Official.yml Passes OfficialBuild parameter to MSIX template
.pipelines/PowerShell-Coordinated_Packages-Official.yml Integrates rebuild branch check for coordinated builds
.pipelines/EV2Specs/ServiceGroupRoot/Shell/Run/Run.ps1 Prevents LTS package publication for rebuild versions

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@TravisEz13 TravisEz13 added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Nov 11, 2025
@TravisEz13 TravisEz13 merged commit 5efa21e into PowerShell:release/v7.4 Nov 11, 2025
35 of 36 checks passed
@TravisEz13 TravisEz13 deleted the backport/release/v7.4/26415-8b7e493dd branch November 11, 2025 21:30
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.

3 participants