Skip to content

Add feature branch support - #2190

Open
lbussell wants to merge 12 commits into
mainfrom
lbussell/feature-branches
Open

Add feature branch support#2190
lbussell wants to merge 12 commits into
mainfrom
lbussell/feature-branches

Conversation

@lbussell

@lbussell lbussell commented Jul 27, 2026

Copy link
Copy Markdown
Member

This PR fixes #649.

  • Only the imagebuilder container image is in scope at the moment, not NuGet packages / .NET tools.
  • feature/* branches are automatically built when there are new changes.
  • Feature branches get published with the feature name as a tag prefix. For example, feature/foo is published as mcr.microsoft.com/dotnet-buildtools/image-builder:foo-$tag where $tag is the regular tag.
  • Added Get-FeatureBranches.ps1 which lists all feature branches across git + mcr.microsoft.com.

@lbussell
lbussell requested a review from a team as a code owner July 27, 2026 20:55
lbussell and others added 11 commits July 27, 2026 13:56
Pushing feature/<name> now queues the official pipeline and publishes
images under a <name> tag prefix, so they don't collide with the tags
built from main. Feature builds are unsigned and skip versions-repo
image info, Kusto ingestion, and publish notifications.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 052ad3ab-a412-4fc2-81c0-cff74e53a766
@lbussell
lbussell force-pushed the lbussell/feature-branches branch from cf095cd to cc5d170 Compare July 27, 2026 20:56
Comment thread eng/pipelines/dotnet-buildtools-image-builder-official.yml Outdated
Comment thread eng/pipelines/templates/variables/image-builder.yml Outdated
Co-authored-by: Matt Thalman <mthalman@microsoft.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds feature-branch support for building/publishing the ImageBuilder container image, including branch-triggered official pipeline runs, feature-scoped tagging, and a helper script to discover feature branches and published images.

Changes:

  • Introduces manifest-level variables to support tag prefixing and a branch-specific “latest-like” tag.
  • Updates the official pipeline and ImageBuilder pipeline variables to build feature/* branches and publish under feature-derived tags.
  • Adds eng/Get-FeatureBranches.ps1 and documents feature-branch publishing in the repo README.

Reviewed changes

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

Show a summary per file
File Description
src/manifest.json Adds TagPrefix/LatestTag variables and prefixes all tags to enable feature-branch publishing without collisions.
README.md Documents that feature/* branches are published and points to the discovery script.
eng/pipelines/templates/variables/image-builder.yml Adds branch-conditional manifest variables and disables official record ingestion for feature builds.
eng/pipelines/dotnet-buildtools-image-builder-official.yml Extends CI trigger to include feature/* branches.
eng/Get-FeatureBranches.ps1 New script to list feature branches and corresponding published images/timestamps.

Comment thread README.md
Comment on lines +18 to +19
ImageBuilder images are published from the `main` branch as well as `feature/*` branches.
Run [`pwsh eng/Get-FeatureBranches.ps1`](./eng/Get-FeatureBranches.ps1) to see all available feature branches
Comment thread src/manifest.json
Comment on lines 44 to +48
"os": "windows",
"osVersion": "windowsservercore-ltsc2019",
"tags": {
"windowsservercore-ltsc2016-amd64": {},
"windowsservercore-ltsc2016-amd64-$(UniqueId)": {}
"$(TagPrefix)windowsservercore-ltsc2016-amd64": {},
"$(TagPrefix)windowsservercore-ltsc2016-amd64-$(UniqueId)": {}
Comment on lines +41 to +43
- ${{ else }}:
- name: manifestVariables
value: --var UniqueId=${{ parameters.sourceBuildPipelineRunId }}
Comment on lines +45 to +48
foreach ($ref in git ls-remote --heads $Remote 'refs/heads/feature/*') {
$branch = ($ref -split "`t")[1] -replace '^refs/heads/', ''
$branches[(ConvertTo-FeatureName $branch)] = $branch
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature branch support

3 participants