-
Notifications
You must be signed in to change notification settings - Fork 120
60 lines (48 loc) · 2.18 KB
/
check-duplicate-issues.yml
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
name: Check for Duplicate Issues
on:
issues:
types: [opened]
jobs:
check_duplicate:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Install jq
run: sudo apt-get update && sudo apt-get install -y jq
- name: Search for existing issues
id: search_issues
run: |
# URL encode the issue title (replace spaces with %20)
issue_title=$(echo "${{ github.event.issue.title }}" | sed 's/ /%20/g')
# Search for issues with a similar title
existing_issues=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/search/issues?q=repo:${{ github.repository }}+type:issue+state:open+${issue_title}")
# Extract issue numbers from the search result
echo "$existing_issues" | jq -r '.items[] | .number' > issue_numbers.txt
- name: Check if a duplicate exists
id: check_duplicate
run: |
issue_count=$(wc -l < issue_numbers.txt)
if [ "$issue_count" -gt 0 ]; then
echo "Duplicate issue(s) found."
exit 0
else
echo "No duplicates found."
exit 1
fi
- name: Comment and close the new issue if duplicate exists
if: steps.check_duplicate.outcome == 'success'
run: |
issue_numbers=$(cat issue_numbers.txt | tr '\n' ', ' | sed 's/, $//')
existing_issue=$(head -n 1 issue_numbers.txt)
# Comment on the new issue
curl -s -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"body\": \"Thanks for raising this issue! However, we believe a similar issue already exists. Kindly go through all the open issues and ask to be assigned to that issue.\"}" \
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/comments"
# Close the new issue
curl -s -X PATCH -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{"state": "closed"}' \
"https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}"