Skip to content
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

[CI] New workflow to ping issue assignee #13874

Merged
merged 2 commits into from
May 23, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions .github/workflows/sycl-issues-ping-assignee.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Ping issue assignees
# We have some specific pool of the issues we would like to handle. Sometimes
# the issue from this pool has an assignee, but doesn't get any updates for a
# long time. In this case it'd be useful to periodically ping the assignee.

# Note: may be we could use "actions/stale@v*", but I'm not sure if it's
# possible to not set the "stale" label at all. Even so, this action will not
# ping the assignee of the "stale" issue more than onсe.

# Note2: probably it'd be useful to have a small doc describing this "specific
# pool" to refer to.

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

jobs:
run:
runs-on: ubuntu-20.04
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
steps:
# List specific issues with an assignee but without recent updates.
# Note: for some reason gh returns 0 results if the "assignee:*" filter is
# added, so we have to manually filter the results.
- name: Get the specicifc list of issues
run: |
gh issue list --search '-label:"help wanted" -label:cuda \
-label:confirmed -label:hip -label:sycl-mlir -label:upstream is:open \
-label:genx -label:sycl-bindless-images -label:sycl-graph \
-label:native-cpu' --limit 200 --json assignees --json number \
--json updatedAt \
-R https://github.com/${{ env.REPO }}.git > issues.json

- name: Filter issues and ping
run: |
days_to_stale=60
current_time=$(date +%s)

cat issues.json | jq -c '.[]' | while read -r issue; do
assignees=$(echo "$issue" | jq '.assignees | length')
if [ "$assignees" -gt 0 ]; then
KornevNikita marked this conversation as resolved.
Show resolved Hide resolved
updated_at=$(echo "$issue" | jq -r '.updatedAt')
updated_at_seconds=$(date -d "$updated_at" +%s)
difference_days=$(( (current_time - updated_at_seconds) / 86400 ))
if [ "$difference_days" -gt $days_to_stale ]; then
issue_number=$(echo "$issue" | jq '.number')
assignee_logins=$(echo "$issue" | jq -r '.assignees[].login' | sed 's/^/@/' | paste -s -d ' ' -)
comment_body="Hi! There have been no updates for at least the last $days_to_stale days, though the issue has assignee(s).

$assignee_logins, could you please take one of the following actions:
- provide an update if you have any
- unassign yourself if you're not looking / going to look into this issue
- mark this issue with the 'confirmed' label if you have confirmed the problem/request and our team should work on it
- close the issue if it has been resolved
- take any other suitable action.

Thanks!"

gh issue comment $issue_number -R https://github.com/${{ env.REPO }}.git -b "$comment_body" >> $GITHUB_STEP_SUMMARY
fi
fi
done
Loading