98 lines
3.7 KiB
YAML
98 lines
3.7 KiB
YAML
# GitHub Actions workflow for managing stale Pull Requests
|
|
# This workflow runs daily to mark inactive PRs as stale and close them after a grace period
|
|
name: 'Close Stale PRs'
|
|
|
|
# Trigger configuration
|
|
on:
|
|
# Run daily at midnight UTC
|
|
schedule:
|
|
- cron: '0 0 * * *'
|
|
|
|
# Allow manual triggering from GitHub UI
|
|
workflow_dispatch:
|
|
|
|
# Define permissions for the GITHUB_TOKEN
|
|
permissions:
|
|
# Required to read repository contents and PR information
|
|
contents: read
|
|
# Required to add labels, comments, and close PRs
|
|
pull-requests: write
|
|
# Required to read issues (PRs are issues in GitHub API)
|
|
issues: write
|
|
|
|
jobs:
|
|
stale:
|
|
name: 'Mark and Close Stale PRs'
|
|
runs-on: ubuntu-latest
|
|
if: github.repository == 'block/goose'
|
|
|
|
steps:
|
|
# Use the official stale action from GitHub
|
|
- name: 'Close Stale PRs'
|
|
uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1
|
|
with:
|
|
# Authentication token with required permissions
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# === TIMING CONFIGURATION ===
|
|
# Mark PRs as stale after 23 days of inactivity
|
|
days-before-stale: 23
|
|
# Close PRs 7 days after being marked stale (total 30 days)
|
|
days-before-close: 7
|
|
|
|
# === STALE MARKING CONFIGURATION ===
|
|
# Message posted when marking PR as stale
|
|
stale-pr-message: |
|
|
This pull request has been automatically marked as stale because it has not had recent activity for 23 days.
|
|
|
|
**What happens next?**
|
|
- If no further activity occurs, this PR will be automatically closed in 7 days
|
|
- To keep this PR active, simply add a comment, push new commits, or add the `keep-open` label
|
|
- If you believe this PR was marked as stale in error, please comment and we'll review it
|
|
|
|
Thank you for your contribution! 🚀
|
|
|
|
# Label applied to stale PRs
|
|
stale-pr-label: 'stale'
|
|
|
|
# === CLOSING CONFIGURATION ===
|
|
# Message posted when closing stale PR
|
|
close-pr-message: |
|
|
This pull request has been automatically closed due to inactivity.
|
|
|
|
**Why was this closed?**
|
|
- No activity for 30 days total (23 days + 7 day grace period)
|
|
- Marked as stale 7 days ago with no subsequent activity
|
|
|
|
**Want to reopen?**
|
|
- You can reopen this PR at any time if you want to continue working on it
|
|
- Consider rebasing against the latest main branch before reopening
|
|
- Feel free to reach out if you need any assistance
|
|
|
|
Thank you for your contribution! We appreciate your effort. 🙏
|
|
|
|
# === EXEMPTION CONFIGURATION ===
|
|
# Skip PRs with these labels (comma-separated)
|
|
exempt-pr-labels: 'keep-open,wip,work-in-progress,security,pinned,dependencies'
|
|
|
|
# Skip draft PRs (they're typically work in progress)
|
|
exempt-draft-pr: true
|
|
|
|
# === ISSUE CONFIGURATION (DISABLED) ===
|
|
# We only want to manage PRs, not issues
|
|
days-before-issue-stale: -1
|
|
days-before-issue-close: -1
|
|
|
|
# === OPERATIONAL SETTINGS ===
|
|
# Maximum number of operations per run (prevents API rate limiting)
|
|
operations-per-run: 100
|
|
|
|
# Remove stale label when PR becomes active again
|
|
remove-stale-when-updated: true
|
|
|
|
# Enable debug output for troubleshooting
|
|
debug-only: false
|
|
|
|
# Order to process PRs (oldest first is more fair)
|
|
ascending: true
|