Adopt arcade inter-branch merge workflow for main → net10.0 and main → net11.0#34144
Merged
Adopt arcade inter-branch merge workflow for main → net10.0 and main → net11.0#34144
Conversation
Adopt the shared dotnet/arcade inter-branch merge infrastructure used by 16 dotnet repos (runtime, aspnetcore, sdk, efcore, msbuild, wpf, etc.). Key improvements over weekly-branch-merge.yml: - Event-driven (push) instead of schedule-based (weekly) - ResetToTargetPaths auto-resets version files to avoid merge conflicts - Centralized scripts maintained by dotnet/arcade team - QuietComments reduces notification noise - Skips PRs for Maestro-only commits - Detailed PR body with merge/conflict resolution instructions Merge flow: main → net10.0 → net11.0 Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Review merging workflow from dotnet/sdk repository
Replace weekly branch merge with arcade inter-branch merge workflow
Feb 19, 2026
The arcade inter-branch merge workflow handles all merge automation. The manual script is no longer needed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Instead of chaining main→net10.0→net11.0, use two separate workflows so both branches merge directly from main. Each workflow has its own config file pointing to its target branch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Matches the pattern used by dotnet/macios. If a push event is missed or the workflow fails, the daily cron catches up. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Allows running merge workflows on-demand from the GitHub Actions UI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR replaces the custom weekly schedule-based branch merge workflow with the shared dotnet/arcade inter-branch merge infrastructure, aligning MAUI with 16 other .NET repositories. The change moves from scheduled weekly merges to event-driven merges triggered on push to main, with added features like automatic version file conflict resolution and reduced GitHub notification noise.
Changes:
- Replaces scheduled weekly merge workflow with two event-driven arcade-based workflows
- Adds configuration files for merge automation with version file auto-reset capabilities
- Removes custom PowerShell merge script (contrary to PR description stating it's kept)
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/merge-main-to-net10.yml | New workflow using arcade infrastructure to merge main → net10.0 on push events |
| .github/workflows/merge-main-to-net11.yml | New workflow using arcade infrastructure to merge main → net11.0 on push events |
| github-merge-flow-net10.jsonc | Configuration for main → net10.0 merge with version file reset paths |
| github-merge-flow-net11.jsonc | Configuration for main → net11.0 merge with version file reset paths |
| .github/workflows/weekly-branch-merge.yml | Removed weekly scheduled merge workflow |
| .github/scripts/MergeBranchAndCreatePR.ps1 | Removed custom merge script (contradicts PR description claiming it's kept) |
Comments suppressed due to low confidence (1)
.github/scripts/MergeBranchAndCreatePR.ps1:1
- The PR description states "Kept
.github/scripts/MergeBranchAndCreatePR.ps1— still available for manual/ad-hoc merges", but the diff shows this entire file is being removed. Either the PR description needs to be updated to reflect that the script is being removed, or the script should be kept if it's truly needed for manual merges. Please clarify the intention and update accordingly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
jonathanpeppers
approved these changes
Feb 20, 2026
Member
jonathanpeppers
left a comment
There was a problem hiding this comment.
AI 🤖 seems OK with this:
Thanks for moving this to the arcade inter-branch merge flow. The implementation looks aligned with the stated goal (split workflows for main→net10.0 and main→net11.0, remove the old weekly/script path, and use push + cron + manual triggers).
Minor follow-up:
The old manual source/target/dry-run flexibility is gone with the script removal. If intentional, it would help to call out that operational tradeoff in the PR description.
Doesn't seem like we'd need dry-run.
This was referenced Feb 21, 2026
TamilarasanSF4853
pushed a commit
to TamilarasanSF4853/maui
that referenced
this pull request
Mar 2, 2026
…→ net11.0 (dotnet#34144) <!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! Adopts the shared `dotnet/arcade` inter-branch merge infrastructure (used by 20+ dotnet repos including runtime, aspnetcore, sdk, efcore, msbuild) to replace our custom weekly schedule-based workflow and manual merge script. ### Changes - **New** `.github/workflows/merge-main-to-net10.yml` — merges `main` → `net10.0` using arcade - **New** `.github/workflows/merge-main-to-net11.yml` — merges `main` → `net11.0` using arcade - **New** `github-merge-flow-net10.jsonc` — config for main → net10.0 - **New** `github-merge-flow-net11.jsonc` — config for main → net11.0 - **Removed** `.github/workflows/weekly-branch-merge.yml` — replaced by above - **Removed** `.github/scripts/MergeBranchAndCreatePR.ps1` — no longer needed ### Why two workflows? The arcade infrastructure supports one `MergeToBranch` per source branch per config file. To merge `main` into both `net10.0` and `net11.0` independently (not chained), we use two workflows with separate config files. ### How it works 1. A PR merges to `main` 2. Both workflows trigger simultaneously 3. Each creates (or updates) a merge PR: `merge/main-to-net10.0` → `net10.0` and `merge/main-to-net11.0` → `net11.0` 4. The merge PRs wait for human review — nothing is auto-merged 5. `ResetToTargetPaths` auto-resets version files (`global.json`, `eng/Versions.props`, etc.) to avoid common conflicts ### Triggers | Trigger | Purpose | |---|---| | `push` to `main` | Immediate — runs on every merge to main | | `schedule` (daily 3 AM UTC) | Safety net — catches missed push events | | `workflow_dispatch` | Manual — run on-demand from Actions UI | ### Comparison | | Old | New | |---|---|---| | Trigger | Weekly cron (Mondays) | On push + daily cron + manual | | Merge topology | Custom script | Arcade shared infrastructure | | Version file conflicts | Manual resolution | `ResetToTargetPaths` auto-resets | | Maestro-only commits | Creates PR anyway | Skipped automatically | | Notifications | Default @-mentions | `-QuietComments` suppresses noise | | Existing PR handling | Fails if PR exists | Updates existing PR in place | | Maintenance | Custom MAUI-only script | Centralized in arcade, shared across 20+ repos | --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com> Co-authored-by: Shane Neuville <shneuvil@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Adopts the shared
dotnet/arcadeinter-branch merge infrastructure (used by 20+ dotnet repos including runtime, aspnetcore, sdk, efcore, msbuild) to replace our custom weekly schedule-based workflow and manual merge script.Changes
.github/workflows/merge-main-to-net10.yml— mergesmain→net10.0using arcade.github/workflows/merge-main-to-net11.yml— mergesmain→net11.0using arcadegithub-merge-flow-net10.jsonc— config for main → net10.0github-merge-flow-net11.jsonc— config for main → net11.0.github/workflows/weekly-branch-merge.yml— replaced by above.github/scripts/MergeBranchAndCreatePR.ps1— no longer neededWhy two workflows?
The arcade infrastructure supports one
MergeToBranchper source branch per config file. To mergemaininto bothnet10.0andnet11.0independently (not chained), we use two workflows with separate config files.How it works
mainmerge/main-to-net10.0→net10.0andmerge/main-to-net11.0→net11.0ResetToTargetPathsauto-resets version files (global.json,eng/Versions.props, etc.) to avoid common conflictsTriggers
pushtomainschedule(daily 3 AM UTC)workflow_dispatchComparison
ResetToTargetPathsauto-resets-QuietCommentssuppresses noise