Skip to content

Commit 77f3f9b

Browse files
authored
fix(auto-merge): skip auto-merge when an update upgrade go version (#126)
We don't want dependabot auto-merged update to change go version requirement without a manual validation. Signed-off-by: Frederic BIDON <fredbi@yahoo.com>
1 parent fd92ffc commit 77f3f9b

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

.github/workflows/auto-merge.yml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,31 @@ jobs:
4343
name: Dependabot metadata
4444
id: metadata
4545
uses: dependabot/fetch-metadata@21025c705c08248db411dc16f3619e6b5f9ea21a # v2.5.0
46+
-
47+
name: Checkout repository
48+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
49+
with:
50+
fetch-depth: 0
51+
-
52+
name: Check go directive unchanged
53+
id: go-directive
54+
run: |
55+
changed=false
56+
for gomod in $(find . -name go.mod -not -path '*/vendor/*'); do
57+
head_go=$(grep '^go ' "$gomod" | awk '{print $2}')
58+
base_go=$(git show "origin/${{ github.event.pull_request.base.ref }}:$gomod" 2>/dev/null | grep '^go ' | awk '{print $2}' || echo "")
59+
if [ -n "$base_go" ] && [ "$head_go" != "$base_go" ]; then
60+
echo "::warning title=go-directive::${gomod}: go directive changed from ${base_go} to ${head_go} — skipping auto-merge"
61+
changed=true
62+
fi
63+
done
64+
echo "changed=$changed" >> "$GITHUB_OUTPUT"
4665
-
4766
name: Auto-approve all dependabot PRs
4867
run: gh pr review --approve "$PR_URL"
4968
-
5069
name: Auto-merge dependabot PRs for development dependencies
51-
if: ${{ contains(steps.metadata.outputs.dependency-group, 'development-dependencies') }}
70+
if: ${{ contains(steps.metadata.outputs.dependency-group, 'development-dependencies') && steps.go-directive.outputs.changed != 'true' }}
5271
run: |
5372
set +e # Don't exit on error
5473
OUTPUT=$(gh pr merge --auto --rebase "$PR_URL" 2>&1)
@@ -70,7 +89,7 @@ jobs:
7089
exit $EXIT_CODE
7190
-
7291
name: Auto-merge dependabot PRs for go-openapi patches
73-
if: ${{ contains(steps.metadata.outputs.dependency-group, 'go-openapi-dependencies') && (steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch') }}
92+
if: ${{ contains(steps.metadata.outputs.dependency-group, 'go-openapi-dependencies') && (steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch') && steps.go-directive.outputs.changed != 'true' }}
7493
run: |
7594
set +e # Don't exit on error
7695
gh pr merge --auto --rebase "$PR_URL"
@@ -90,7 +109,7 @@ jobs:
90109
exit $EXIT_CODE
91110
-
92111
name: Auto-merge dependabot PRs for golang.org updates
93-
if: ${{ contains(steps.metadata.outputs.dependency-group, 'golang-org-dependencies') }}
112+
if: ${{ contains(steps.metadata.outputs.dependency-group, 'golang-org-dependencies') && steps.go-directive.outputs.changed != 'true' }}
94113
run: |
95114
set +e # Don't exit on error
96115
OUTPUT=$(gh pr merge --auto --rebase "$PR_URL" 2>&1)

0 commit comments

Comments
 (0)