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