Stale-bot workflow (Clooos/Bubble-Card)
The Stale-bot workflow from Clooos/Bubble-Card, explained and optimized by Latchkey.
C
CI health: C - fair
Point runs-on at Latchkey and get run de-duplication, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the Stale-bot workflow from the Clooos/Bubble-Card repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
workflow (.yml)
name: Stale-bot
# yamllint disable-line rule:truthy
on:
push:
pull_request:
schedule:
- cron: "*/30 * * * *"
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
steps:
# The 60 day stale policy for PRs
# Used for:
# - PRs
# - No PRs marked as no-stale
# - No issues (-1)
- name: 60 days stale PRs policy
if: github.repository_owner == 'Clooos'
uses: actions/stale@v9.0.0
with:
days-before-stale: 60
days-before-close: 7
days-before-issue-stale: -1
days-before-issue-close: -1
operations-per-run: 150
remove-stale-when-updated: true
stale-pr-label: "stale"
exempt-pr-labels: "no-stale"
stale-pr-message: >
There hasn't been any activity on this pull request recently. This
pull request has been automatically marked as stale because of that
and will be closed if no further activity occurs within 7 days.
If you are the author of this PR, please leave a comment if you want
to keep it open. Also, please rebase your PR onto the latest dev
branch to ensure that it's up to date with the latest changes.
Thank you for your contribution!
# The 90 day stale policy for issues
# Used for:
# - Issues
# - No issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: 90 days stale issues
if: github.repository_owner == 'Clooos'
uses: actions/stale@v9.0.0
with:
days-before-stale: 90
days-before-close: 7
days-before-pr-stale: -1
days-before-pr-close: -1
operations-per-run: 250
remove-stale-when-updated: true
stale-issue-label: "stale"
exempt-issue-labels: "no-stale,help-wanted,needs-more-information"
stale-issue-message: >
There hasn't been any activity on this issue recently. Due to the
high number of incoming GitHub notifications, we have to clean some
of the old issues, as many of them have already been resolved with
the latest updates.
Please make sure to update to the latest version and
check if that solves the issue. Let us know if that works for you by
adding a comment π
This issue has now been marked as stale and will be closed if no
further activity occurs. If you want to keep it open, please leave a comment.
Thank you for your contributions.
# The 21 day stale policy for issues
# Used for:
# - Issues that are pending more information (incomplete issues)
# - No Issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: Needs more information stale issues policy
if: github.repository_owner == 'Clooos'
uses: actions/stale@v9.0.0
with:
only-labels: "needs-more-information"
days-before-stale: 14
days-before-close: 7
days-before-pr-stale: -1
days-before-pr-close: -1
operations-per-run: 250
remove-stale-when-updated: true
stale-issue-label: "stale"
labels-to-remove-when-unstale: "needs-more-information"
exempt-issue-labels: "no-stale,help-wanted"
stale-issue-message: >
There hasn't been any activity on this issue recently. Due to the
high number of incoming GitHub notifications, we have to clean some
of the old issues, as many of them have already been resolved with
the latest updates.
Please make sure to update to the latest version and
check if that solves the issue. Let us know if that works for you by
adding a comment π
This issue has now been marked as stale and will be closed if no
further activity occurs. Thank you for your contributions.
# Remove "needs-more-information" after update
# Used for:
# - Issues that are pending more information (incomplete issues)
# - No Issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: Remove needs-more-information label
if: github.repository_owner == 'Clooos'
uses: actions/stale@v9.0.0
with:
only-labels: "needs-more-information"
days-before-stale: -1
days-before-close: 100
days-before-pr-stale: -1
days-before-pr-close: -1
operations-per-run: 250
remove-stale-when-updated: true
stale-issue-label: "needs-more-information"
exempt-issue-labels: "no-stale,help-wanted"
stale-issue-message: >
There has been a request for more information.
The stale bot will monitor the situation and remove the label when answered.
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: Stale-bot # yamllint disable-line rule:truthy on: push: pull_request: schedule: - cron: "*/30 * * * *" workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: stale: timeout-minutes: 30 runs-on: latchkey-small steps: # The 60 day stale policy for PRs # Used for: # - PRs # - No PRs marked as no-stale # - No issues (-1) - name: 60 days stale PRs policy if: github.repository_owner == 'Clooos' uses: actions/stale@v9.0.0 with: days-before-stale: 60 days-before-close: 7 days-before-issue-stale: -1 days-before-issue-close: -1 operations-per-run: 150 remove-stale-when-updated: true stale-pr-label: "stale" exempt-pr-labels: "no-stale" stale-pr-message: > There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days. If you are the author of this PR, please leave a comment if you want to keep it open. Also, please rebase your PR onto the latest dev branch to ensure that it's up to date with the latest changes. Thank you for your contribution! # The 90 day stale policy for issues # Used for: # - Issues # - No issues marked as no-stale or help-wanted # - No PRs (-1) - name: 90 days stale issues if: github.repository_owner == 'Clooos' uses: actions/stale@v9.0.0 with: days-before-stale: 90 days-before-close: 7 days-before-pr-stale: -1 days-before-pr-close: -1 operations-per-run: 250 remove-stale-when-updated: true stale-issue-label: "stale" exempt-issue-labels: "no-stale,help-wanted,needs-more-information" stale-issue-message: > There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment π This issue has now been marked as stale and will be closed if no further activity occurs. If you want to keep it open, please leave a comment. Thank you for your contributions. # The 21 day stale policy for issues # Used for: # - Issues that are pending more information (incomplete issues) # - No Issues marked as no-stale or help-wanted # - No PRs (-1) - name: Needs more information stale issues policy if: github.repository_owner == 'Clooos' uses: actions/stale@v9.0.0 with: only-labels: "needs-more-information" days-before-stale: 14 days-before-close: 7 days-before-pr-stale: -1 days-before-pr-close: -1 operations-per-run: 250 remove-stale-when-updated: true stale-issue-label: "stale" labels-to-remove-when-unstale: "needs-more-information" exempt-issue-labels: "no-stale,help-wanted" stale-issue-message: > There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment π This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions. # Remove "needs-more-information" after update # Used for: # - Issues that are pending more information (incomplete issues) # - No Issues marked as no-stale or help-wanted # - No PRs (-1) - name: Remove needs-more-information label if: github.repository_owner == 'Clooos' uses: actions/stale@v9.0.0 with: only-labels: "needs-more-information" days-before-stale: -1 days-before-close: 100 days-before-pr-stale: -1 days-before-pr-close: -1 operations-per-run: 250 remove-stale-when-updated: true stale-issue-label: "needs-more-information" exempt-issue-labels: "no-stale,help-wanted" stale-issue-message: > There has been a request for more information. The stale bot will monitor the situation and remove the label when answered.
What changed
- Run on Latchkey managed runners with one line (
runs-on), which apply the fixes below automatically and self-heal transient failures. This example useslatchkey-small; pick the runner size that fits the job. - Cancel superseded runs when a branch or PR gets a newer push.
- Add a job timeout so a hung step cannot burn hours of runner time.
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.