@@ -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