File tree 5 files changed +51
-1
lines changed
5 files changed +51
-1
lines changed Original file line number Diff line number Diff line change
1
+ const {
2
+ PR_ACTION ,
3
+ PR_AUTHOR ,
4
+ PR_BODY ,
5
+ PR_NUMBER ,
6
+ IGNORE_AUTHORS ,
7
+ LABEL_BLOCK ,
8
+ LABEL_BLOCK_REASON
9
+ } = require ( "./constants" )
10
+
11
+ module . exports = async ( { github, context, core} ) => {
12
+ if ( IGNORE_AUTHORS . includes ( PR_AUTHOR ) ) {
13
+ return core . notice ( "Author in IGNORE_AUTHORS list; skipping..." )
14
+ }
15
+
16
+ if ( PR_ACTION != "opened" ) {
17
+ return core . notice ( "Only newly open PRs are labelled to avoid spam; skipping" )
18
+ }
19
+
20
+ const RELATED_ISSUE_REGEX = / I s s u e n u m b e r : [ ^ \d \r \n ] + (?< issue > \d + ) / ;
21
+ const isMatch = RELATED_ISSUE_REGEX . exec ( PR_BODY ) ;
22
+ if ( isMatch == null ) {
23
+ core . info ( `No related issue found, maybe the author didn't use the template but there is one.` )
24
+
25
+ let msg = "No related issues found. Please ensure there is an open issue related to this change to avoid significant delays or closure." ;
26
+ await github . rest . issues . createComment ( {
27
+ owner : context . repo . owner ,
28
+ repo : context . repo . repo ,
29
+ body : msg ,
30
+ issue_number : PR_NUMBER ,
31
+ } ) ;
32
+
33
+ return await github . rest . issues . addLabels ( {
34
+ issue_number : PR_NUMBER ,
35
+ owner : context . repo . owner ,
36
+ repo : context . repo . repo ,
37
+ labels : [ LABEL_BLOCK , LABEL_BLOCK_REASON ]
38
+ } )
39
+ }
40
+ }
Original file line number Diff line number Diff line change 14
14
uses : ./.github/workflows/reusable_export_pr_details.yml
15
15
with :
16
16
record_pr_workflow_id : ${{ github.event.workflow_run.id }}
17
+ workflow_origin : ${{ github.event.repository.full_name }}
17
18
secrets :
18
19
token : ${{ secrets.GITHUB_TOKEN }}
19
20
label_pr :
Original file line number Diff line number Diff line change 12
12
uses : ./.github/workflows/reusable_export_pr_details.yml
13
13
with :
14
14
record_pr_workflow_id : ${{ github.event.workflow_run.id }}
15
+ workflow_origin : ${{ github.event.repository.full_name }}
15
16
secrets :
16
17
token : ${{ secrets.GITHUB_TOKEN }}
17
18
release_label_on_merge :
Original file line number Diff line number Diff line change 10
10
get_pr_details :
11
11
if : ${{ github.event.workflow_run.conclusion == 'success' }}
12
12
uses : ./.github/workflows/reusable_export_pr_details.yml
13
+ env :
13
14
with :
14
15
record_pr_workflow_id : ${{ github.event.workflow_run.id }}
16
+ workflow_origin : ${{ github.event.repository.full_name }}
15
17
secrets :
16
18
token : ${{ secrets.GITHUB_TOKEN }}
17
19
check_related_issue :
20
22
steps :
21
23
- uses : actions/checkout@v3
22
24
- name : " Debug workflow_run event"
23
- run : echo ${{ toJSON( github.event) }}
25
+ run : echo " ${{ github }}"
24
26
- name : " Ensure related issue is present"
25
27
uses : actions/github-script@v6
26
28
env :
Original file line number Diff line number Diff line change 6
6
record_pr_workflow_id :
7
7
required : true
8
8
type : number
9
+ # this protects from anyone mimicking "Record PR details" dependency
10
+ # regardless of our untrusted input validation
11
+ workflow_origin :
12
+ required : true
13
+ type : string
9
14
secrets :
10
15
token :
11
16
required : true
32
37
33
38
jobs :
34
39
export_pr_details :
40
+ if : inputs.workflow_origin == "bla/bla"
35
41
runs-on : ubuntu-latest
36
42
env :
37
43
FILENAME : pr.txt
You can’t perform that action at this time.
0 commit comments