File tree 2 files changed +58
-0
lines changed
2 files changed +58
-0
lines changed Original file line number Diff line number Diff line change
1
+ /* Fetch all open PRs and updates them with main branch.*/
2
+
3
+ const updatePrs = async ( { github, context } ) => {
4
+ const { repo, owner } = context . repo ;
5
+ const pulls = await github . rest . pulls . list ( {
6
+ owner,
7
+ repo,
8
+ state : 'open' ,
9
+ base : 'main' ,
10
+ per_page : 100
11
+ } ) ;
12
+
13
+ const nonDraftPulls = pulls ?. data ?. filter ( ( pr ) => ! pr . draft ) ;
14
+ let updatedBranches = 0 ;
15
+
16
+ if ( nonDraftPulls ?. length > 0 ) {
17
+ for ( const pr of nonDraftPulls ) {
18
+ try {
19
+ await github . rest . pulls . updateBranch ( {
20
+ owner,
21
+ repo,
22
+ pull_number : pr . number
23
+ } ) ;
24
+ updatedBranches ++ ;
25
+ } catch ( e ) {
26
+ console . error ( e ) ;
27
+ }
28
+ }
29
+ }
30
+
31
+ return `Updated branches: ${ updatedBranches } /${ nonDraftPulls . length } ` ;
32
+ } ;
33
+
34
+ export default updatePrs ;
Original file line number Diff line number Diff line change
1
+ ---
2
+ name : Update all PR branches if main gets update
3
+
4
+ on :
5
+ push :
6
+ branches :
7
+ - " main"
8
+
9
+ jobs :
10
+ update-prs :
11
+ name : Update PRs
12
+ runs-on : ubuntu-latest
13
+ steps :
14
+ - name : ⬇ Checkout repo
15
+ uses : actions/checkout@v3
16
+
17
+ - name : ⌚ Update PRs
18
+ id : update-prs
19
+ uses : actions/github-script@v6
20
+ with :
21
+ script : |
22
+ const { default: updatePrs } = await import('${{ github.workspace }}/.github/scripts/update-prs.js');
23
+ // print how many PRs are updated
24
+ console.log(await updatePrs({github, context}));
You can’t perform that action at this time.
0 commit comments