mirror of
https://github.com/juanfont/headscale.git
synced 2026-02-21 20:20:31 +09:00
Some checks failed
Build / build-nix (push) Has been cancelled
Build / build-cross (GOARCH=amd64 GOOS=darwin) (push) Has been cancelled
Build / build-cross (GOARCH=amd64 GOOS=linux) (push) Has been cancelled
Build / build-cross (GOARCH=arm64 GOOS=darwin) (push) Has been cancelled
Build / build-cross (GOARCH=arm64 GOOS=linux) (push) Has been cancelled
Check Generated Files / check-generated (push) Has been cancelled
NixOS Module Tests / nix-module-check (push) Has been cancelled
Tests / test (push) Has been cancelled
Close inactive issues / close-issues (push) Has been cancelled
Replace tiangolo/issue-manager with custom logic that distinguishes bot comments from human responses. The issue-manager action treated all comments equally, so the bot's own instruction comment would trigger label removal on the next scheduled run. Split into two jobs: - remove-label-on-response: triggers on issue_comment from non-bot users, removes the needs-more-info label immediately - close-stale: runs on daily schedule, uses nushell to iterate open needs-more-info issues, checks for human comments after the label was added, and closes after 3 days with no response
99 lines
3.6 KiB
YAML
99 lines
3.6 KiB
YAML
name: Needs More Info - Timer
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 0 * * *" # Daily at midnight UTC
|
|
issue_comment:
|
|
types: [created]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
# When a non-bot user comments on a needs-more-info issue, remove the label.
|
|
remove-label-on-response:
|
|
if: >-
|
|
github.repository == 'juanfont/headscale' &&
|
|
github.event_name == 'issue_comment' &&
|
|
github.event.comment.user.type != 'Bot' &&
|
|
contains(github.event.issue.labels.*.name, 'needs-more-info')
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
issues: write
|
|
steps:
|
|
- name: Remove needs-more-info label
|
|
run: gh issue edit "$NUMBER" --remove-label needs-more-info
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
GH_REPO: ${{ github.repository }}
|
|
NUMBER: ${{ github.event.issue.number }}
|
|
|
|
# On schedule, close issues that have had no human response for 3 days.
|
|
close-stale:
|
|
if: >-
|
|
github.repository == 'juanfont/headscale' &&
|
|
github.event_name != 'issue_comment'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
issues: write
|
|
steps:
|
|
- uses: hustcer/setup-nu@920172d92eb04671776f3ba69d605d3b09351c30 # v3.22
|
|
with:
|
|
version: "*"
|
|
|
|
- name: Close stale needs-more-info issues
|
|
shell: nu {0}
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
GH_REPO: ${{ github.repository }}
|
|
run: |
|
|
let issues = (gh issue list
|
|
--repo $env.GH_REPO
|
|
--label "needs-more-info"
|
|
--state open
|
|
--json number
|
|
| from json)
|
|
|
|
for issue in $issues {
|
|
let number = $issue.number
|
|
print $"Checking issue #($number)"
|
|
|
|
# Find when needs-more-info was last added
|
|
let events = (gh api $"repos/($env.GH_REPO)/issues/($number)/events"
|
|
--paginate | from json | flatten)
|
|
let label_event = ($events
|
|
| where event == "labeled" and label.name == "needs-more-info"
|
|
| last)
|
|
let label_added_at = ($label_event.created_at | into datetime)
|
|
|
|
# Check for non-bot comments after the label was added
|
|
let comments = (gh api $"repos/($env.GH_REPO)/issues/($number)/comments"
|
|
--paginate | from json | flatten)
|
|
let human_responses = ($comments
|
|
| where user.type != "Bot"
|
|
| where { ($in.created_at | into datetime) > $label_added_at })
|
|
|
|
if ($human_responses | length) > 0 {
|
|
print $" Human responded, removing label"
|
|
gh issue edit $number --repo $env.GH_REPO --remove-label needs-more-info
|
|
continue
|
|
}
|
|
|
|
# Check if 3 days have passed
|
|
let elapsed = (date now) - $label_added_at
|
|
if $elapsed < 3day {
|
|
print $" Only ($elapsed | format duration day) elapsed, skipping"
|
|
continue
|
|
}
|
|
|
|
print $" No response for ($elapsed | format duration day), closing"
|
|
let message = [
|
|
"This issue has been automatically closed because no additional information was provided within 3 days."
|
|
""
|
|
"If you have the requested information, please open a new issue and include the debug information requested above."
|
|
""
|
|
"Thank you for your understanding."
|
|
] | str join "\n"
|
|
gh issue comment $number --repo $env.GH_REPO --body $message
|
|
gh issue close $number --repo $env.GH_REPO --reason "not planned"
|
|
gh issue edit $number --repo $env.GH_REPO --remove-label needs-more-info
|
|
}
|