Skip to content

Commit df079f8

Browse files
authored
chore: orchestrate docs PRs on docs release (#1432)
1 parent 0d50d56 commit df079f8

File tree

1 file changed

+50
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)