5
5
types : [ closed ]
6
6
7
7
jobs :
8
- unassign_issue :
9
- name : Mark issue as available
8
+ determine_issue_number :
9
+ name : Determine issue number
10
10
runs-on : ubuntu-latest
11
11
if : >
12
- github.event.action == 'closed' && !github.event.pull_request.merged && !(
12
+ !(
13
13
(github.actor == 'dependabot[bot]') ||
14
14
(
15
15
startsWith(github.event.pull_request.title, '[Bot] ') ||
20
20
)
21
21
permissions :
22
22
contents : read
23
- issues : write
23
+ outputs :
24
+ issue_number : ${{ steps.get_issue_number.outputs.issue_number }}
24
25
steps :
25
26
- name : echo PR data
26
27
run : |
@@ -42,17 +43,28 @@ jobs:
42
43
bodyRegexFlags : ' i'
43
44
bodyURLRegex : ' http(s?):\/\/(github.com)(\/JabRef)(\/jabref)(\/issues)\/(?<ticketNumber>\d+)'
44
45
outputOnly : true
46
+ unassign_issue :
47
+ name : Mark issue as available
48
+ runs-on : ubuntu-latest
49
+ needs : determine_issue_number
50
+ if : >
51
+ (needs.determine_issue_number.outputs.issue_number != '-1') &&
52
+ (!github.event.pull_request.merged)
53
+ permissions :
54
+ contents : read
55
+ issues : write
56
+ steps :
45
57
- uses : actions/checkout@v4
46
58
- name : Remove assignee
47
59
run : |
48
60
# "brute force" remove assignee - it might happen that the contributor was unassinged, but the PR closed later; therefore we need " || true" to ignore any error
49
- gh issue edit ${{ steps.get_issue_number .outputs.ticketNumber }} --remove-assignee ${{ github.event.pull_request.user.login }} || true
61
+ gh issue edit ${{ needs.determine_issue_number .outputs.issue_number }} --remove-assignee ${{ github.event.pull_request.user.login }} || true
50
62
env :
51
63
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
52
64
- name : Check assignees
53
65
id : check_assignee
54
66
run : |
55
- issue=$(gh issue view ${{ steps.get_issue_number .outputs.ticketNumber }} --json assignees)
67
+ issue=$(gh issue view ${{ needs.determine_issue_number .outputs.issue_number }} --json assignees)
56
68
count=$(echo "$issue" | jq '.assignees | length')
57
69
if [ "$count" -gt 0 ]; then
58
70
echo "assigned=yes" >> $GITHUB_OUTPUT
@@ -66,10 +78,10 @@ jobs:
66
78
run : |
67
79
set -e
68
80
69
- gh issue edit ${{ steps.get_issue_number .outputs.ticketNumber }} --remove-label "📍 Assigned"
70
- gh issue edit ${{ steps.get_issue_number .outputs.ticketNumber }} --remove-label "🔔 reminder-sent"
71
- gh issue edit ${{ steps.get_issue_number .outputs.ticketNumber }} --remove-label "📌 Pinned"
72
- gh issue edit ${{ steps.get_issue_number .outputs.ticketNumber }} --remove-label "FirstTimeCodeContribution"
81
+ gh issue edit ${{ needs.determine_issue_number .outputs.issue_number }} --remove-label "📍 Assigned"
82
+ gh issue edit ${{ needs.determine_issue_number .outputs.issue_number }} --remove-label "🔔 reminder-sent"
83
+ gh issue edit ${{ needs.determine_issue_number .outputs.issue_number }} --remove-label "📌 Pinned"
84
+ gh issue edit ${{ needs.determine_issue_number .outputs.issue_number }} --remove-label "FirstTimeCodeContribution"
73
85
env :
74
86
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
75
87
- name : Move issue to "Free to take" in "Good First Issues"
82
94
target-column : " Assigned"
83
95
ignored-columns : " "
84
96
default-column : " Free to take"
85
- issue-number : ${{ steps.get_issue_number .outputs.ticketNumber }}
97
+ issue-number : ${{ needs.determine_issue_number .outputs.issue_number }}
86
98
skip-if-not-in-project : true
87
99
- name : Move issue to "Free to take" in "Candidates for University Projects"
88
100
if : steps.check_assignee.outputs.assigned == 'no'
@@ -94,48 +106,23 @@ jobs:
94
106
target-column : " Assigned"
95
107
ignored-columns : " "
96
108
default-column : " Free to take"
97
- issue-number : ${{ steps.get_issue_number .outputs.ticketNumber }}
109
+ issue-number : ${{ needs.determine_issue_number .outputs.issue_number }}
98
110
skip-if-not-in-project : true
99
111
comment_on_resolved_issue :
100
112
name : Comment on resolved issue
101
113
runs-on : ubuntu-latest
114
+ needs : determine_issue_number
102
115
if : >
103
- github.event.action == 'closed' && github.event.pull_request.merged && !(
104
- (github.actor == 'dependabot[bot]') ||
105
- (
106
- startsWith(github.event.pull_request.title, '[Bot] ') ||
107
- startsWith(github.event.pull_request.title, 'Bump ') ||
108
- startsWith(github.event.pull_request.title, 'New Crowdin updates') ||
109
- startsWith(github.event.pull_request.title, 'Update Gradle Wrapper from')
110
- )
111
- )
116
+ (needs.determine_issue_number.outputs.issue_number != '-1') &&
117
+ (github.event.pull_request.merged)
112
118
permissions :
113
119
contents : read
114
120
issues : write
115
121
steps :
116
- - name : echo PR data
117
- run : |
118
- echo "PR Number: ${{ github.event.pull_request.number }}"
119
- echo "PR URL: ${{ github.event.pull_request.html_url }}"
120
- echo "PR Body"
121
- echo "${{ github.event.pull_request.body }}"
122
- - name : Determine issue number
123
- id : get_issue_number
124
- uses : koppor/ticket-check-action@add-output
125
- with :
126
- token : ${{ secrets.GITHUB_TOKEN }}
127
- ticketLink : ' https://github.com/JabRef/jabref/issues/%ticketNumber%'
128
- ticketPrefix : ' #'
129
- titleRegex : ' ^#(?<ticketNumber>\d+)'
130
- branchRegex : ' ^(?<ticketNumber>\d+)'
131
- bodyRegex : ' (?<action>fixes|closes|resolves)\s+#(?<ticketNumber>(?!12345\b)\d+)'
132
- bodyRegexFlags : ' i'
133
- bodyURLRegex : ' http(s?):\/\/(github.com)(\/JabRef)(\/jabref)(\/issues)\/(?<ticketNumber>\d+)'
134
- outputOnly : true
135
122
- name : Comment on issue
136
123
uses : thollander/actions-comment-pull-request@v3
137
124
with :
138
- pr-number : ${{ steps.get_issue_number .outputs.ticketNumber }}
125
+ pr-number : ${{ needs.determine_issue_number .outputs.issue_number }}
139
126
message : |
140
127
Closed by ${{ github.event.pull_request.html_url }}
141
128
0 commit comments