Close inactive issues workflow (geerlingguy/sbc-reviews)
The Close inactive issues workflow from geerlingguy/sbc-reviews, explained and optimized by Latchkey.
A
CI health: A - excellent
Point runs-on at Latchkey and get job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the Close inactive issues workflow from the geerlingguy/sbc-reviews 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: Close inactive issues
'on':
schedule:
- cron: "55 9 * * 4" # semi-random time
jobs:
close-issues:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v8
with:
days-before-stale: 1460
days-before-close: 365
exempt-issue-labels: bug,pinned,security,planned,enhancement
exempt-pr-labels: bug,pinned,security,planned,enhancement
stale-issue-label: "stale"
stale-pr-label: "stale"
stale-issue-message: |
This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
close-issue-message: |
This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
stale-pr-message: |
This pr has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
close-pr-message: |
This pr has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
repo-token: ${{ secrets.GITHUB_TOKEN }}
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
--- name: Close inactive issues 'on': schedule: - cron: "55 9 * * 4" # semi-random time jobs: close-issues: timeout-minutes: 30 runs-on: latchkey-small permissions: issues: write pull-requests: write steps: - uses: actions/stale@v8 with: days-before-stale: 1460 days-before-close: 365 exempt-issue-labels: bug,pinned,security,planned,enhancement exempt-pr-labels: bug,pinned,security,planned,enhancement stale-issue-label: "stale" stale-pr-label: "stale" stale-issue-message: | This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution! Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale. close-issue-message: | This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details. stale-pr-message: | This pr has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution! Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale. close-pr-message: | This pr has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details. repo-token: ${{ secrets.GITHUB_TOKEN }}
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. - 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.