lifecycle.yml

 1name: lifecycle
 2
 3on:
 4  workflow_call:
 5    inputs:
 6      issue-message:
 7        type: string
 8        default: |
 9          This bot triages issues in order to help the maintainers identify what
10          needs attention, according to the following lifecycle rules:
11
12          - After 90 days of inactivity, `lifecycle/stale` is applied
13          - After 90 days of inactivity since `lifecycle/stale` was applied,
14            `lifecycle/rotten` is applied
15
16          **This bot will not automatically close stale issues.**
17
18          To remove the stale status, you can:
19
20          - Remove the stale label from this issue
21          - Comment on this issue
22          - Close this issue
23          - Offer to help out with triaging
24
25          ---
26
27          To avoid automatic lifecycle management of this issue, add
28          `lifecycle/pinned`.
29
30      pr-message:
31        type: string
32        default: |
33          This bot triages pull requests in order to help the maintainers
34          identify what needs attention, according to the following lifecycle
35          rules:
36
37          - After 90 days of inactivity, `lifecycle/stale` is applied
38          - After 90 days of inactivity since `lifecycle/stale` was applied,
39            `lifecycle/rotten` is applied
40
41          **This bot will not automatically close stale pull requests.**
42
43          To remove the stale status, you can:
44
45          - Remove the stale label from this pull request
46          - Comment on this issue
47          - Close this issue
48          - Offer to help out with triage and code review
49
50          ---
51
52          To avoid automatic lifecycle management of this pull request, add
53          `lifecycle/pinned`.
54
55jobs:
56  stale:
57    name: stale
58    runs-on: ubuntu-latest
59    permissions:
60      issues: write
61      pull-requests: write
62    steps:
63      - uses: actions/stale@v9
64        with:
65          days-before-close: -1
66          days-before-stale: 90
67          exempt-all-milestones: true
68          exempt-issue-labels: lifecycle/pinned,lifecycle/rotten,lifecycle/stale
69          exempt-pr-labels: lifecycle/pinned,lifecycle/rotten,lifecycle/stale
70          labels-to-remove-when-stale: lifecycle/active
71          stale-issue-label: lifecycle/stale
72          stale-issue-message: ${{ inputs.issue-message }}
73          stale-pr-label: lifecycle/stale
74          stale-pr-message: ${{ inputs.pr-message }}
75
76  rotten:
77    name: rotten
78    runs-on: ubuntu-latest
79    permissions:
80      issues: write
81      pull-requests: write
82    steps:
83      - uses: actions/stale@v9
84        with:
85          days-before-close: -1
86          days-before-stale: 180
87          exempt-all-milestones: true
88          labels-to-remove-when-stale: lifecycle/active,lifecycle/stale
89          exempt-issue-labels: lifecycle/pinned
90          exempt-pr-labels: lifecycle/pinned
91          only-labels: lifecycle/stale
92          stale-issue-label: lifecycle/rotten
93          stale-issue-message: ${{ inputs.issue-message }}
94          stale-pr-label: lifecycle/rotten
95          stale-pr-message: ${{ inputs.pr-message }}