-
Notifications
You must be signed in to change notification settings - Fork 330
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create workflow for auto assignment of issues and for stale issues #2313
Changes from all commits
e9906fb
df964b4
2b3f2aa
f63d070
a890a18
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
name: auto-assignment | ||
on: | ||
issues: | ||
types: | ||
- opened | ||
|
||
permissions: | ||
contents: read | ||
issues: write | ||
pull-requests: write | ||
|
||
jobs: | ||
welcome: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
const script = require('./\.github/workflows/scripts/auto-assignment.js') | ||
script({github, context}) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/** Automatically assign issues and PRs to users in the `assigneesList` | ||
* on a rotating basis. | ||
|
||
@param {!object} | ||
GitHub objects can call GitHub APIs using their built-in library functions. | ||
The context object contains issue and PR details. | ||
*/ | ||
|
||
module.exports = async ({ github, context }) => { | ||
let issueNumber; | ||
let assigneesList; | ||
// Is this an issue? If so, assign the issue number. Otherwise, assign the PR number. | ||
if (context.payload.issue) { | ||
//assignee List for issues. | ||
assigneesList = ["SuryanarayanaY", "sachinprasadhs"]; | ||
issueNumber = context.payload.issue.number; | ||
} else { | ||
//assignee List for PRs. | ||
assigneesList = []; | ||
issueNumber = context.payload.number; | ||
} | ||
console.log("assignee list", assigneesList); | ||
console.log("entered auto assignment for this issue: ", issueNumber); | ||
if (!assigneesList.length) { | ||
console.log("No assignees found for this repo."); | ||
return; | ||
} | ||
let noOfAssignees = assigneesList.length; | ||
let selection = issueNumber % noOfAssignees; | ||
let assigneeForIssue = assigneesList[selection]; | ||
|
||
console.log( | ||
"issue Number = ", | ||
issueNumber + " , assigning to: ", | ||
assigneeForIssue | ||
); | ||
return github.rest.issues.addAssignees({ | ||
issue_number: context.issue.number, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
assignees: [assigneeForIssue], | ||
}); | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
name: Close inactive issues | ||
on: | ||
schedule: | ||
- cron: "30 1 * * *" | ||
jobs: | ||
close-issues: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
issues: write | ||
pull-requests: write | ||
steps: | ||
- name: Awaiting response issues | ||
uses: actions/stale@v9 | ||
with: | ||
days-before-issue-stale: 14 | ||
days-before-issue-close: 14 | ||
stale-issue-label: "stale" | ||
# reason for closed the issue default value is not_planned | ||
close-issue-reason: completed | ||
only-labels: "stat:awaiting response from contributor" | ||
stale-issue-message: > | ||
This issue is stale because it has been open for 14 days with no activity. | ||
It will be closed if no further activity occurs. Thank you. | ||
# List of labels to remove when issues/PRs unstale. | ||
labels-to-remove-when-unstale: "stat:awaiting response from contributor" | ||
close-issue-message: > | ||
This issue was closed because it has been inactive for 28 days. | ||
Please reopen if you'd like to work on this further. | ||
days-before-pr-stale: 14 | ||
days-before-pr-close: 14 | ||
stale-pr-message: "This PR is stale because it has been open for 14 days with no activity. It will be closed if no further activity occurs. Thank you." | ||
close-pr-message: "This PR was closed because it has been inactive for 28 days. Please reopen if you'd like to work on this further." | ||
repo-token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Contribution issues | ||
uses: actions/stale@v9 | ||
with: | ||
days-before-issue-stale: 180 | ||
days-before-issue-close: 365 | ||
stale-issue-label: "stale" | ||
# reason for closed the issue default value is not_planned | ||
close-issue-reason: not_planned | ||
any-of-labels: "stat:contributions welcome,good first issue" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. let us not close contributions welcome issue as stale There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For contribution welcome, for stale label to apply it will take 180 days and to close issue it will be 365 days. |
||
# List of labels to remove when issues/PRs unstale. | ||
labels-to-remove-when-unstale: "stat:contributions welcome,good first issue" | ||
stale-issue-message: > | ||
This issue is stale because it has been open for 180 days with no activity. | ||
It will be closed if no further activity occurs. Thank you. | ||
close-issue-message: > | ||
This issue was closed because it has been inactive for more than 1 year. | ||
repo-token: ${{ secrets.GITHUB_TOKEN }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let us only close the issue when contributor has not responded. Let us keep the issue open if the team has not yet responded.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it only applies when the label only-labels: "stat:awaiting response from contributor" is added and is inactive for 14 days, if this label is not added to the issue stale will not be applied.