From 83ba41173a296470214a26396616059361ee6203 Mon Sep 17 00:00:00 2001 From: Igor Malinovskiy Date: Fri, 7 Nov 2025 12:49:43 +0100 Subject: [PATCH] Add stale issue management --- .github/workflows/stale.yml | 74 +++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..fb414fcf --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,74 @@ +name: "Stale Issue Management" +on: + schedule: + # Run daily at midnight UTC + - cron: "0 0 * * *" + workflow_dispatch: # Allow manual triggering +env: + # Default stale policy timeframes + DAYS_BEFORE_STALE: 365 + DAYS_BEFORE_CLOSE: 30 + # Accelerated timeline for needs-information issues + NEEDS_INFO_DAYS_BEFORE_STALE: 30 + NEEDS_INFO_DAYS_BEFORE_CLOSE: 7 +jobs: + stale: + runs-on: ubuntu-latest + steps: + # First step: Handle regular issues (excluding needs-information) + - name: Mark regular issues as stale + uses: actions/stale@v9 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + # Default stale policy + days-before-stale: ${{ env.DAYS_BEFORE_STALE }} + days-before-close: ${{ env.DAYS_BEFORE_CLOSE }} + # Explicit stale label configuration + stale-issue-label: "stale" + stale-pr-label: "stale" + stale-issue-message: | + This issue has been automatically marked as stale due to inactivity. + It will be closed in 30 days if no further activity occurs. + If you believe this issue is still relevant, please add a comment to keep it open. + close-issue-message: | + This issue has been automatically closed due to inactivity. + If you believe this issue is still relevant, please reopen it or create a new issue with updated information. + # Exclude waiting-for-feedback issues from this step + exempt-issue-labels: 'no-stale,waiting-for-feedback' + # Remove stale label when issue/PR becomes active again + remove-stale-when-updated: true + # Apply to pull requests with same timeline + days-before-pr-stale: ${{ env.DAYS_BEFORE_STALE }} + days-before-pr-close: ${{ env.DAYS_BEFORE_CLOSE }} + stale-pr-message: | + This pull request has been automatically marked as stale due to inactivity. + It will be closed in 30 days if no further activity occurs. + close-pr-message: | + This pull request has been automatically closed due to inactivity. + If you would like to continue this work, please reopen the PR or create a new one. + # Only exclude no-stale PRs (needs-information PRs follow standard timeline) + exempt-pr-labels: 'no-stale' + # Second step: Handle waiting-for-feedback issues with accelerated timeline + - name: Mark waiting-for-feedback issues as stale + uses: actions/stale@v9 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + # Accelerated timeline for waiting-for-feedback + days-before-stale: ${{ env.NEEDS_INFO_DAYS_BEFORE_STALE }} + days-before-close: ${{ env.NEEDS_INFO_DAYS_BEFORE_CLOSE }} + # Explicit stale label configuration + stale-issue-label: "stale" + # Only target ISSUES with waiting-for-feedback label (not PRs) + only-issue-labels: 'waiting-for-feedback' + stale-issue-message: | + This issue has been marked as stale because it requires additional information + that has not been provided for 30 days. It will be closed in 7 days if the + requested information is not provided. + close-issue-message: | + This issue has been closed because the requested information was not provided within the specified timeframe. + If you can provide the missing information, please reopen this issue or create a new one. + # Disable PR processing for this step + days-before-pr-stale: -1 + days-before-pr-close: -1 + # Remove stale label when issue becomes active again + remove-stale-when-updated: true \ No newline at end of file