99
1010 type : string
1111 required : false
12- default : ' true'
12+ default : " true"
1313 organization-bot :
1414 description : |
1515 The bot name for your organization,
1919
2020 type : string
2121 required : false
22- default : ' bot-go-openapi[bot]'
22+ default : " bot-go-openapi[bot]"
2323
2424permissions :
2525 contents : read
@@ -39,25 +39,72 @@ jobs:
3939 PR_URL : ${{ github.event.pull_request.html_url }}
4040 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
4141 steps :
42- -
43- name : Dependabot metadata
42+ - name : Dependabot metadata
4443 id : metadata
4544 uses : dependabot/fetch-metadata@21025c705c08248db411dc16f3619e6b5f9ea21a # v2.5.0
46- -
47- name : Auto-approve all dependabot PRs
45+ - name : Auto-approve all dependabot PRs
4846 run : gh pr review --approve "$PR_URL"
49- -
50- name : Auto-merge dependabot PRs for development dependencies
47+ - name : Auto-merge dependabot PRs for development dependencies
5148 if : ${{ contains(steps.metadata.outputs.dependency-group, 'development-dependencies') }}
52- run : gh pr merge --auto --rebase "$PR_URL"
53- -
54- name : Auto-merge dependabot PRs for go-openapi patches
49+ run : |
50+ set +e # Don't exit on error
51+ OUTPUT=$(gh pr merge --auto --rebase "$PR_URL" 2>&1)
52+ EXIT_CODE=$?
53+ set -e # Re-enable exit on error
54+ # Check if error is due to race condition (merge already in progress)
55+ # GitHub GraphQL API returns: "GraphQL: Merge already in progress (mergePullRequest)"
56+ if echo "$OUTPUT" | grep -q "Merge already in progress"; then
57+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
58+ exit 0
59+ fi
60+ if echo "$OUTPUT" | grep -q "Pull request is already merged"; then
61+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
62+ exit 0
63+ fi
64+ # Unexpected error - fail the workflow
65+ echo "::error title=auto-merge::Failed to enable auto-merge"
66+ echo "$OUTPUT"
67+ exit $EXIT_CODE
68+ - name : Auto-merge dependabot PRs for go-openapi patches
5569 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') }}
56- run : gh pr merge --auto --rebase "$PR_URL"
57- -
58- name : Auto-merge dependabot PRs for golang.org updates
70+ run : |
71+ set +e # Don't exit on error
72+ gh pr merge --auto --rebase "$PR_URL"
73+ # Check if error is due to race condition (merge already in progress)
74+ # GitHub GraphQL API returns: "GraphQL: Merge already in progress (mergePullRequest)"
75+ if echo "$OUTPUT" | grep -q "Merge already in progress"; then
76+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
77+ exit 0
78+ fi
79+ if echo "$OUTPUT" | grep -q "Pull request is already merged"; then
80+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
81+ exit 0
82+ fi
83+ # Unexpected error - fail the workflow
84+ echo "::error title=auto-merge::Failed to enable auto-merge"
85+ echo "$OUTPUT"
86+ exit $EXIT_CODE
87+ - name : Auto-merge dependabot PRs for golang.org updates
5988 if : ${{ contains(steps.metadata.outputs.dependency-group, 'golang-org-dependencies') }}
60- run : gh pr merge --auto --rebase "$PR_URL"
89+ run : |
90+ set +e # Don't exit on error
91+ OUTPUT=$(gh pr merge --auto --rebase "$PR_URL" 2>&1)
92+ EXIT_CODE=$?
93+ set -e # Re-enable exit on error
94+ # Check if error is due to race condition (merge already in progress)
95+ # GitHub GraphQL API returns: "GraphQL: Merge already in progress (mergePullRequest)"
96+ if echo "$OUTPUT" | grep -q "Merge already in progress"; then
97+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
98+ exit 0
99+ fi
100+ if echo "$OUTPUT" | grep -q "Pull request is already merged"; then
101+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
102+ exit 0
103+ fi
104+ # Unexpected error - fail the workflow
105+ echo "::error title=auto-merge::Failed to enable auto-merge"
106+ echo "$OUTPUT"
107+ exit $EXIT_CODE
61108
62109 actions-bot :
63110 # description: |
@@ -73,18 +120,31 @@ jobs:
73120 PR_URL : ${{ github.event.pull_request.html_url }}
74121 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
75122 steps :
76- -
77- name : Checkout repository
123+ - name : Checkout repository
78124 uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
79- -
80- name : Auto-approve all bot-go-openapi PRs
125+ - name : Auto-approve all bot-go-openapi PRs
81126 run : gh pr review --approve "$PR_URL"
82- -
83- name : Wait for all workflow runs to complete
84- uses : go-openapi/gh-actions/ci-jobs/wait-pending-jobs@8340d5403ad368f2ddaa0bc3b10ce38a10099e2c # v1.4.3
127+ - name : Wait for all workflow runs to complete
128+ uses : go-openapi/gh-actions/ci-jobs/wait-pending-jobs@f7ed44020a2682556ac42fa9c210142495270354 # v1.4.5
85129 with :
86130 pr-url : ${{ env.PR_URL }}
87131 github-token : ${{ secrets.GITHUB_TOKEN }}
88- -
89- name : Auto-merge bot-go-openapi PRs
90- run : gh pr merge --auto --rebase "$PR_URL"
132+ - name : Auto-merge bot-go-openapi PRs
133+ run : |
134+ set +e # Don't exit on error
135+ OUTPUT=$(gh pr merge --auto --rebase "$PR_URL" 2>&1)
136+ EXIT_CODE=$?
137+ # Check if error is due to race condition (merge already in progress)
138+ # GitHub GraphQL API returns: "GraphQL: Merge already in progress (mergePullRequest)"
139+ if echo "$OUTPUT" | grep -q "Merge already in progress"; then
140+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
141+ exit 0
142+ fi
143+ if echo "$OUTPUT" | grep -q "Pull request is already merged"; then
144+ echo "::warning title=auto-merge::Auto-merge already handled by another workflow (race condition)"
145+ exit 0
146+ fi
147+ # Unexpected error - fail the workflow
148+ echo "::error title=auto-merge::Failed to enable auto-merge"
149+ echo "$OUTPUT"
150+ exit $EXIT_CODE
0 commit comments