Skip to content

Commit dce7ba4

Browse files
Added Multiple workflows
1 parent 4b9d9d0 commit dce7ba4

File tree

4 files changed

+158
-0
lines changed

4 files changed

+158
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
name: Close Old Issues
3+
on:
4+
schedule:
5+
- cron: 0 0 * * *
6+
jobs:
7+
close-issues:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Checkout Repository
11+
uses: actions/checkout@v3
12+
- name: Close Old Issues
13+
run: >
14+
open_issues=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}"
15+
\
16+
"https://api.github.com/repos/${{ github.repository }}/issues?state=open" \
17+
| jq -r '.[] | .number')
18+
for issue in $open_issues; do
19+
# Get the last updated timestamp of the issue
20+
last_updated=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
21+
"https://api.github.com/repos/${{ github.repository }}/issues/$issue" \
22+
| jq -r '.updated_at')
23+
days_since_update=$(( ( $(date +%s) - $(date -d "$last_updated" +%s) ) / 86400 ))
24+
if [ $days_since_update -gt 20 ]; then # Modify the condition to check if days_since_update is greater than 20
25+
curl -s -X PATCH -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
26+
-H "Accept: application/vnd.github.v3+json" \
27+
-d '{"state":"closed"}' \
28+
"https://api.github.com/repos/${{ github.repository }}/issues/$issue"
29+
fi
30+
done

.github/workflows/issues.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
name: Add Comment to Newly Open Issue
3+
on:
4+
issues:
5+
types:
6+
- opened
7+
jobs:
8+
add-comment:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
issues: write
12+
steps:
13+
- name: Checkout repository
14+
uses: actions/checkout@v3
15+
- name: Add Comment
16+
uses: actions/github-script@v4
17+
with:
18+
github-token: ${{ secrets.GITHUB_TOKEN }}
19+
script: >
20+
const { issue } = context.payload;
21+
22+
const author = issue.user.login;
23+
24+
const issueNumber = issue.number;
25+
26+
const comment = `Hello @${author}! \n Thank you for raising this issue. \nPlease make sure to follow our [Contributing Guidelines.](https://github.com/devs-in-tech/DevsInTech/blob/main/CONTRIBUTING.md) \nDon't forget to ⭐ our [DevsInTech](https://github.com/devs-in-tech/DevsInTech)\n\nOur review team will carefully assess the issue and reach out to you soon!\n We appreciate your patience!`;
27+
28+
const { owner, repo } = context.repo;
29+
30+
await github.issues.createComment({
31+
owner: owner,
32+
repo: repo,
33+
issue_number: issueNumber,
34+
body: comment
35+
});
36+
37+
console.log(`Comment added to the Issue #${issueNumber}.`);

.github/workflows/lock.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: 'Issue Lockdown'
2+
3+
on:
4+
issues:
5+
types: opened
6+
7+
permissions:
8+
issues: write
9+
10+
jobs:
11+
action:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: dessant/repo-lockdown@v3 # Reference: https://github.com/dessant/repo-lockdown
15+
with:
16+
close-issue: false
17+
process-only: 'issues'
18+
issue-labels: 'gssoc23'
19+
exclude-issue-labels: '🚀 ready'
20+
skip-closed-issue-comment: true
21+
issue-comment: >
22+
To reduce notifications, issues are locked. Your issue will be unlocked when we add the label, `🚀 ready`.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Close Issue if Opener has Opened Issues
2+
3+
on:
4+
issues:
5+
types:
6+
- opened
7+
8+
jobs:
9+
close_issue:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Check if opener has multiple open issues
14+
id: check_open_issues
15+
uses: actions/github-script@v4
16+
with:
17+
github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
18+
script: |
19+
const owner = context.repo.owner;
20+
const repo = context.repo.repo;
21+
const issueNumber = context.issue.number;
22+
const issueOpener = context.payload.issue.user.login;
23+
const previousIssuesResponse = await github.request('GET /repos/{owner}/{repo}/issues', {
24+
owner,
25+
repo,
26+
state: 'open',
27+
creator: issueOpener
28+
});
29+
const previousOpenIssues = previousIssuesResponse.data.filter(issue => issue.number !== issueNumber && !issue.pull_request);
30+
const previousOpenIssueNumbers = previousOpenIssues.map(issue => `#${issue.number}`);
31+
const openerName = context.payload.issue.user.login;
32+
const closeIssue = previousOpenIssues.length > 0;
33+
console.log(`Close issue: ${closeIssue}`);
34+
if (closeIssue) {
35+
const comment = `Hey @${openerName} , You can't have another issue before completing the previous one 😀 \n you already have the following ${previousOpenIssues.length} open issues 👀 ! :\n\n${previousOpenIssueNumbers.join('\n')}`;
36+
core.exportVariable('comment_body', comment); // Export the variable
37+
core.setOutput('close_issue', true);
38+
} else {
39+
core.exportVariable('comment_body', '');
40+
core.setOutput('close_issue', false);
41+
}
42+
- name: Close the issue and add a comment
43+
if: always() && ${{ needs.check_open_issues.outputs.close_issue }}
44+
uses: actions/github-script@v4
45+
with:
46+
github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
47+
script: |
48+
const owner = context.repo.owner;
49+
const repo = context.repo.repo;
50+
const issueNumber = context.issue.number;
51+
const comment = process.env.comment_body; // Retrieve the exported variable
52+
53+
if (comment.trim() === '') {
54+
console.log('Comment body is empty. Skipping comment creation.');
55+
return;
56+
}
57+
const closeComment = `${comment}`;
58+
await github.issues.createComment({
59+
owner,
60+
repo,
61+
issue_number: issueNumber,
62+
body: closeComment
63+
});
64+
await github.issues.update({
65+
owner,
66+
repo,
67+
issue_number: issueNumber,
68+
state: 'closed'
69+
});

0 commit comments

Comments
 (0)