Skip to content

Commit

Permalink
Add staleness checker to github to notify owners/assigners
Browse files Browse the repository at this point in the history
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
  • Loading branch information
sighingnow committed Feb 27, 2024
1 parent 8a60871 commit 33956e9
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions .github/workflows/stale.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: 'Check stale issues and pull requests'

on:
schedule:
- cron: '0 0 12 * *'
workflow_dispatch:

env:
DEFAULT_ASSIGNEE: yecol sighingnow
DAYS_BEFORE_ISSUE_CLOSE: 30
DAYS_BEFORE_PR_CLOSE: 60
DAYS_BEFORE_ISSUE_STALE: 7
DAYS_BEFORE_PR_STALE: 14

jobs:
stale:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: |
# install jq
sudo apt-get update
sudo apt-get install -y jq
# install gh cli
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
- uses: actions/stale@v9
id: stale
with:
days-before-issue-close: ${{ env.DAYS_BEFORE_ISSUE_CLOSE }}
days-before-pr-close: ${{ env.DAYS_BEFORE_PR_CLOSE }}
days-before-issue-stale: ${{ env.DAYS_BEFORE_ISSUE_STALE }}
days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_STALE }}
stale-issue-label: stale
stale-pr-label: stale
exempt-pr-labels: work-in-progress,requires-further-info
exempt-issue-labels: requires-further-info,wontfix,newcomers
labels-to-remove-when-unstale: stale,requires-further-info
exempt-draft-pr: true

- name: Notify assignees
env:
REPO: ${{ github.repository }}
STALED: ${{ steps.stale.outputs.staled-issues-prs }}
GH_TOKEN: ${{ github.token }}
run: |
for N in $(echo "$STALED" | jq -r ".[].number");
do
assignees=$(echo $(gh issue view $N -R $REPO --json assignees) | jq -r ".assignees[].login")
echo "Processing stale issue/pr $N, assignees: $assignees"
message=""
if [ -z "$assignees" ]; then
message="/cc"
for assignee in $DEFAULT_ASSIGNEE; do
message="$message @$assignee"
done
message="$message, this issus/pr has had no activity for a long time, please help to review the status and assign people to work on it."
else
message="/cc"
for assignee in $assignees; do
message="$message @$assignee"
done
message="$message, this issus/pr has had no activity for for a long time, could you folks help to review the status ?"
message="$message </br>"
message="$message If this issue/pr is waiting for further response from the reporter/author, please help to add the label \`requires-further-info\` to suppress further notification."
message="$message </br>"
message="$message If this issue/pr is not in your queue, please unassign yourself from it to avoid been notified again."
fi
echo "Commenting on stale issue/pr $N, assignees: $assignees, message: $message"
gh issue comment $N -R $REPO -b "$message"
done

0 comments on commit 33956e9

Please sign in to comment.