-
Notifications
You must be signed in to change notification settings - Fork 7
50 lines (43 loc) · 1.76 KB
/
auto-merge-on-docs-release.yml
File metadata and controls
50 lines (43 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# .github/workflows/auto-merge-on-release.yml in docs repo
name: Auto-merge on Docs Release
on:
repository_dispatch:
types: [docs_release]
jobs:
merge-dependent-prs:
runs-on: ubuntu-latest
steps:
- name: Find and merge dependent PRs
uses: actions/github-script@v8
with:
script: |
const version = context.payload.client_payload.version;
// Find PRs with matching labels
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open'
});
for (const pr of prs) {
const labels = pr.labels.map(l => l.name);
const hasLatestLabel = labels.includes('depends-on: docs@latest');
const hasVersionLabel = labels.includes(`depends-on: docs@${version}`);
if (hasLatestLabel || hasVersionLabel) {
// Check if PR is approved and CI passes
const { data: reviews } = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number
});
const approved = reviews.some(r => r.state === 'APPROVED');
if (approved) {
await github.rest.pulls.merge({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
merge_method: 'squash'
});
console.log(`Merged PR #${pr.number}: ${pr.title}`);
}
}
}