Skip to content

Commit 89562aa

Browse files
authored
Merge pull request #36318 from MikeRayMSFT/update-block-preview-workflow
Update block-preview-branch-merge workflow logic
2 parents eb11f89 + fe74d83 commit 89562aa

1 file changed

Lines changed: 78 additions & 39 deletions

File tree

.github/workflows/block-preview-branch-merge.yml

Lines changed: 78 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -29,47 +29,86 @@ jobs:
2929
Write-Host "Base reference: $env:BASE_REF"
3030
Write-Host "Repository: $env:REPO_NAME"
3131
32-
if ($env:HEAD_REF -like "release-preview-*") {
33-
Write-Host "❌ MERGE BLOCKED: Preview branch detected"
34-
Write-Host ""
35-
Write-Host "This pull request is attempting to merge from a preview branch"
36-
Write-Host "to '$env:BASE_REF', which is not permitted."
37-
Write-Host ""
38-
Write-Host "IMPORTANT: Preview content cannot be merged into other branches directly"
39-
Write-Host "from branches named 'release-preview-*'."
40-
Write-Host ""
41-
Write-Host "To merge such branches:"
42-
Write-Host "1. Create a new branch from your target branch"
43-
Write-Host "2. Squash the changes to one commit"
44-
Write-Host "3. Create a new pull request from the new branch"
45-
Write-Host ""
46-
Write-Host "This restriction maintains content quality and prevents preview"
47-
Write-Host "material from inadvertently entering production branches."
32+
# Only apply restrictions if head branch is a release-preview branch
33+
if ($env:HEAD_REF -like "*release-preview*") {
34+
Write-Host "Release-preview branch detected: $env:HEAD_REF"
4835
49-
# Set job summary for GitHub UI
50-
echo "# 🚫 Merge Blocked - Preview Branch" >> $env:GITHUB_STEP_SUMMARY
51-
echo "" >> $env:GITHUB_STEP_SUMMARY
52-
echo "This pull request cannot be merged because it originates from a **preview branch**." >> $env:GITHUB_STEP_SUMMARY
53-
echo "" >> $env:GITHUB_STEP_SUMMARY
54-
echo "## Restriction Details" >> $env:GITHUB_STEP_SUMMARY
55-
echo "- **Head branch:** $env:HEAD_REF" >> $env:GITHUB_STEP_SUMMARY
56-
echo "- **Target branch:** $env:BASE_REF" >> $env:GITHUB_STEP_SUMMARY
57-
echo "- **Restriction:** Preview content cannot be merged directly from 'release-preview-*' branches" >> $env:GITHUB_STEP_SUMMARY
58-
echo "" >> $env:GITHUB_STEP_SUMMARY
59-
echo "## Why This Restriction Exists" >> $env:GITHUB_STEP_SUMMARY
60-
echo "This restriction maintains content quality and prevents preview material from inadvertently entering production branches." >> $env:GITHUB_STEP_SUMMARY
61-
echo "" >> $env:GITHUB_STEP_SUMMARY
62-
echo "## Resolution Steps" >> $env:GITHUB_STEP_SUMMARY
63-
echo "1. Create a new branch from **$env:BASE_REF**" >> $env:GITHUB_STEP_SUMMARY
64-
echo "2. Squash the changes to one commit" >> $env:GITHUB_STEP_SUMMARY
65-
echo "3. Create a new pull request from the new branch" >> $env:GITHUB_STEP_SUMMARY
66-
echo "" >> $env:GITHUB_STEP_SUMMARY
67-
echo "## Need Help?" >> $env:GITHUB_STEP_SUMMARY
68-
echo "Contact the [SQL Docs team](mailto:dbdocsprreviews@microsoft.com) for assistance with this restriction." >> $env:GITHUB_STEP_SUMMARY
69-
70-
exit 1
36+
# Block merges to main
37+
if ($env:BASE_REF -eq "main") {
38+
Write-Host "❌ MERGE BLOCKED: Release-preview branches cannot merge to main"
39+
Write-Host ""
40+
Write-Host "This pull request is attempting to merge from a release-preview branch"
41+
Write-Host "'$env:HEAD_REF' to 'main', which is not permitted."
42+
Write-Host ""
43+
Write-Host "IMPORTANT: Release-preview branches cannot merge directly to main."
44+
Write-Host ""
45+
Write-Host "To merge such branches:"
46+
Write-Host "1. Create a new branch from main"
47+
Write-Host "2. Squash the changes to one commit"
48+
Write-Host "3. Create a new pull request from the new branch"
49+
Write-Host ""
50+
51+
# Set job summary for GitHub UI
52+
echo "# 🚫 Merge Blocked - Release-Preview to Main" >> $env:GITHUB_STEP_SUMMARY
53+
echo "" >> $env:GITHUB_STEP_SUMMARY
54+
echo "Release-preview branches cannot merge directly to **main**." >> $env:GITHUB_STEP_SUMMARY
55+
echo "" >> $env:GITHUB_STEP_SUMMARY
56+
echo "## Restriction Details" >> $env:GITHUB_STEP_SUMMARY
57+
echo "- **Head branch:** $env:HEAD_REF" >> $env:GITHUB_STEP_SUMMARY
58+
echo "- **Target branch:** $env:BASE_REF" >> $env:GITHUB_STEP_SUMMARY
59+
echo "- **Restriction:** Release-preview branches cannot merge to main" >> $env:GITHUB_STEP_SUMMARY
60+
61+
exit 1
62+
}
63+
# For release-* targets (non-preview), always block
64+
elseif ($env:BASE_REF -like "release-*" -and $env:BASE_REF -notlike "release-preview-*") {
65+
Write-Host "❌ MERGE BLOCKED: Release-preview branches cannot merge to non-preview release branches"
66+
Write-Host ""
67+
Write-Host "This pull request is attempting to merge from '$env:HEAD_REF'"
68+
Write-Host "to '$env:BASE_REF', which is not permitted."
69+
Write-Host ""
70+
Write-Host "IMPORTANT: Release-preview branches can only merge to other release-preview branches."
71+
Write-Host ""
72+
73+
# Set job summary for GitHub UI
74+
echo "# 🚫 Merge Blocked - Release-Preview to Release" >> $env:GITHUB_STEP_SUMMARY
75+
echo "" >> $env:GITHUB_STEP_SUMMARY
76+
echo "Release-preview branches cannot merge to non-preview release branches." >> $env:GITHUB_STEP_SUMMARY
77+
echo "" >> $env:GITHUB_STEP_SUMMARY
78+
echo "## Restriction Details" >> $env:GITHUB_STEP_SUMMARY
79+
echo "- **Head branch:** $env:HEAD_REF" >> $env:GITHUB_STEP_SUMMARY
80+
echo "- **Target branch:** $env:BASE_REF" >> $env:GITHUB_STEP_SUMMARY
81+
echo "- **Restriction:** Release-preview branches can only merge to other release-preview branches" >> $env:GITHUB_STEP_SUMMARY
82+
83+
exit 1
84+
}
85+
# For other targets (including release-preview-*), check name matching
86+
else {
87+
if ($env:HEAD_REF -like "*$env:BASE_REF*") {
88+
Write-Host "✅ Merge allowed: Head branch '$env:HEAD_REF' contains base branch name '$env:BASE_REF'"
89+
echo "# ✅ Merge Check Passed" >> $env:GITHUB_STEP_SUMMARY
90+
echo "Head branch **$env:HEAD_REF** is allowed to merge to **$env:BASE_REF**." >> $env:GITHUB_STEP_SUMMARY
91+
} else {
92+
Write-Host "❌ MERGE BLOCKED: Release-preview branch name doesn't contain target branch name"
93+
Write-Host ""
94+
Write-Host "This pull request is attempting to merge from '$env:HEAD_REF'"
95+
Write-Host "to '$env:BASE_REF', but the head branch name doesn't contain the target name."
96+
Write-Host ""
97+
98+
# Set job summary for GitHub UI
99+
echo "# 🚫 Merge Blocked - Name Mismatch" >> $env:GITHUB_STEP_SUMMARY
100+
echo "" >> $env:GITHUB_STEP_SUMMARY
101+
echo "Release-preview branch name must contain target branch name." >> $env:GITHUB_STEP_SUMMARY
102+
echo "" >> $env:GITHUB_STEP_SUMMARY
103+
echo "## Restriction Details" >> $env:GITHUB_STEP_SUMMARY
104+
echo "- **Head branch:** $env:HEAD_REF" >> $env:GITHUB_STEP_SUMMARY
105+
echo "- **Target branch:** $env:BASE_REF" >> $env:GITHUB_STEP_SUMMARY
106+
107+
exit 1
108+
}
109+
}
71110
} else {
72-
Write-Host "✅ Merge allowed: Head reference '$env:HEAD_REF' is permitted"
111+
Write-Host "✅ Merge allowed: Non-release-preview branch '$env:HEAD_REF' has no restrictions"
73112
echo "# ✅ Merge Check Passed" >> $env:GITHUB_STEP_SUMMARY
74113
echo "Head branch **$env:HEAD_REF** is allowed to merge to **$env:BASE_REF**." >> $env:GITHUB_STEP_SUMMARY
75114
}

0 commit comments

Comments
 (0)