-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
132 lines (128 loc) · 5.59 KB
/
on-pr-closed.yml
File metadata and controls
132 lines (128 loc) · 5.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: On PR closed
on:
pull_request_target:
types: [ closed ]
jobs:
determine_issue_number:
name: Determine issue number
runs-on: ubuntu-latest
if: >
(github.repository == 'JabRef/jabref') &&
!(
(github.actor == 'dependabot[bot]') ||
(
startsWith(github.event.pull_request.title, '[Bot] ') ||
startsWith(github.event.pull_request.title, 'Bump ') ||
startsWith(github.event.pull_request.title, 'New Crowdin updates') ||
startsWith(github.event.pull_request.title, 'Update Gradle Wrapper from')
)
)
permissions:
contents: read
outputs:
issue_number: ${{ steps.get_issue_number.outputs.ticketNumber }}
steps:
- name: echo PR data
run: |
echo "PR Number: ${{ github.event.pull_request.number }}"
echo "PR URL: ${{ github.event.pull_request.html_url }}"
cat <<EOF
PR Body:
${{ github.event.pull_request.body }}
EOF
- name: Determine issue number
id: get_issue_number
uses: koppor/ticket-check-action@add-output
with:
token: ${{ secrets.GITHUB_TOKEN }}
ticketLink: 'https://github.com/JabRef/jabref/issues/%ticketNumber%'
ticketPrefix: '#'
titleRegex: '^#(?<ticketNumber>\d+)'
branchRegex: '^(?<ticketNumber>\d+)'
# Matches GitHub's closes/fixes/resolves #{number}, but does not match our example `Closes #13109` in PULL_REQUEST_TEMPLATE
bodyRegex: '(?<action>fixes|closes|resolves)\s+(?:https?:\/\/github\.com\/JabRef\/jabref\/issues\/)?#?(?<ticketNumber>(?!13109\b)\d+)'
bodyRegexFlags: 'i'
outputOnly: true
- run: echo "${{ steps.get_issue_number.outputs.ticketNumber }}"
unassign_issue:
name: Mark issue as available
runs-on: ubuntu-latest
needs: determine_issue_number
if: >
(needs.determine_issue_number.outputs.issue_number != '-1') &&
(!github.event.pull_request.merged)
permissions:
contents: read
issues: write
steps:
- uses: actions/checkout@v5
- name: Remove assignee
run: |
# "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
gh issue edit ${{ needs.determine_issue_number.outputs.issue_number }} --remove-assignee ${{ github.event.pull_request.user.login }} || true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check assignees
id: check_assignee
run: |
issue=$(gh issue view ${{ needs.determine_issue_number.outputs.issue_number }} --json assignees)
count=$(echo "$issue" | jq '.assignees | length')
if [ "$count" -gt 0 ]; then
echo "assigned=yes" >> $GITHUB_OUTPUT
else
echo "assigned=no" >> $GITHUB_OUTPUT
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Remove labels assigned, reminder-sent, pinned, and "FirstTimeCodeContribution"
if: steps.check_assignee.outputs.assigned == 'no'
run: |
set -e
gh issue edit ${{ needs.determine_issue_number.outputs.issue_number }} --remove-label "📍 Assigned"
gh issue edit ${{ needs.determine_issue_number.outputs.issue_number }} --remove-label "🔔 reminder-sent"
gh issue edit ${{ needs.determine_issue_number.outputs.issue_number }} --remove-label "📌 Pinned"
gh issue edit ${{ needs.determine_issue_number.outputs.issue_number }} --remove-label "FirstTimeCodeContribution"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Move issue to "Free to take" in "Good First Issues"
if: steps.check_assignee.outputs.assigned == 'no'
uses: m7kvqbe1/github-action-move-issues/@main
with:
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
project-url: "https://github.com/orgs/JabRef/projects/5"
target-labels: "📍 Assigned"
target-column: "Assigned"
ignored-columns: ""
default-column: "Free to take"
issue-number: ${{ needs.determine_issue_number.outputs.issue_number }}
skip-if-not-in-project: true
- name: Move issue to "Free to take" in "Candidates for University Projects"
if: steps.check_assignee.outputs.assigned == 'no'
uses: m7kvqbe1/github-action-move-issues/@main
with:
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
project-url: "https://github.com/orgs/JabRef/projects/3"
target-labels: "📍 Assigned"
target-column: "Assigned"
ignored-columns: ""
default-column: "Free to take"
issue-number: ${{ needs.determine_issue_number.outputs.issue_number }}
skip-if-not-in-project: true
comment_on_resolved_issue:
name: Comment on resolved issue
runs-on: ubuntu-latest
needs: determine_issue_number
if: >
(needs.determine_issue_number.outputs.issue_number != '-1') &&
(github.event.pull_request.merged)
permissions:
contents: read
issues: write
steps:
- name: Comment on issue
uses: thollander/actions-comment-pull-request@v3
with:
pr-number: ${{ needs.determine_issue_number.outputs.issue_number }}
message: |
We think that this issue was fixed. Please head to <https://builds.jabref.org/main> to download a development build and try it out.
For any feedback, add a comment to the pull request at ${{ github.event.pull_request.html_url }}.