# This workflow warns of PRs that have had no activity for a specified amount of time.
#
# For more information, see https://github.com/actions/stale
name: Mark stale pull requests

on:
  # Run every day at 00:00 UTC
  schedule:
    - cron: '0 0 * * *'
  # Or run on demand
  workflow_dispatch:

jobs:
  stale:
    if: github.repository == 'apache/solr'
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
      actions: write
    steps:
      - uses: actions/stale@v9
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

          days-before-pr-stale: 60
          days-before-issue-stale: -1   # we don't use issues
          days-before-close: -1         # don't close stale PRs/issues
          exempt-draft-pr: true         # don't mark draft PRs as stale
          stale-pr-label: "stale"       # label to use when marking as stale

          stale-pr-message: >
            This PR had no visible activity in the past 60 days, labeling it as stale.
            Any new activity will remove the stale label. To attract more reviewers, please tag
            someone or notify the dev@solr.apache.org mailing list.
            Thank you for your contribution!

          # TODO: Increase budget after initial testing
          operations-per-run: 30        # operations budget
