Fix for issue https://github.com/JabRef/jabref/issues/12810 #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: On PR closed | |
on: | |
pull_request_target: | |
types: [ closed ] | |
jobs: | |
determine_issue_number: | |
name: Determine issue number | |
runs-on: ubuntu-latest | |
if: > | |
!( | |
(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 #12345` in PULL_REQUEST_TEMPLATE | |
bodyRegex: '(?<action>fixes|closes|resolves)\s+(?:https?:\/\/github\.com\/JabRef\/jabref\/issues\/)?#?(?<ticketNumber>(?!12345\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@v4 | |
- 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/@add-issue-parameter | |
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/@add-issue-parameter | |
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: | | |
Closed by ${{ github.event.pull_request.html_url }} | |
Please head to <https://builds.jabref.org/main> to try it out. | |
For any feedback, add a comment to the pull request at ${{ github.event.pull_request.html_url }}. |