Skip to content
Latchkey

Close stale issues and PRs workflow (cshum/imagor)

The Close stale issues and PRs workflow from cshum/imagor, 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.

Grade your own workflow free or run it on Latchkey →
Source: cshum/imagor.github/workflows/stale.ymlLicense Apache-2.0View source

What it does

This is the Close stale issues and PRs workflow from the cshum/imagor repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
---
# This workflow warns and then closes issues and PRs that have had no
# activity for a specified amount of time.
#
# You can adjust the behavior by modifying this file.
# For more information, see:
# https://github.com/actions/stale
name: Close stale issues and PRs
on:
  schedule:
    - cron: '* */12 * * *'

jobs:
  stale:
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
    steps:
      - uses: actions/stale@v9
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          stale-issue-message: This issue is stale because it has been open 30 days
            with no activity. Remove the stale label or add a comment, or this issue
            will be closed in 15 days. You can always re-open if you still feel this
            is still an issue. Tag @cshum for more information.
          stale-pr-message: This PR is stale because it has been open 60 days with
            no activity. Remove the stale label or add a comment, or this PR will
            be closed in 30 days. You can always re-open if you feel this is something
            we should still keep working on. Tag @cshum for more information.
          close-issue-message: This issue was closed because it has been stale for
            15 days with no activity.
          close-pr-message: This PR was closed because it has been stale for 30 days
            with no activity.
          days-before-issue-stale: 30
          days-before-pr-stale: 60
          days-before-issue-close: 45
          days-before-pr-close: 30
          exempt-draft-pr: true
          exempt-issue-labels: do-not-reap
          exempt-pr-labels: do-not-reap
          operations-per-run: 300

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

---
# This workflow warns and then closes issues and PRs that have had no
# activity for a specified amount of time.
#
# You can adjust the behavior by modifying this file.
# For more information, see:
# https://github.com/actions/stale
name: Close stale issues and PRs
on:
  schedule:
    - cron: '* */12 * * *'
 
jobs:
  stale:
    timeout-minutes: 30
    runs-on: latchkey-small
    permissions:
      issues: write
      pull-requests: write
    steps:
      - uses: actions/stale@v9
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          stale-issue-message: This issue is stale because it has been open 30 days
            with no activity. Remove the stale label or add a comment, or this issue
            will be closed in 15 days. You can always re-open if you still feel this
            is still an issue. Tag @cshum for more information.
          stale-pr-message: This PR is stale because it has been open 60 days with
            no activity. Remove the stale label or add a comment, or this PR will
            be closed in 30 days. You can always re-open if you feel this is something
            we should still keep working on. Tag @cshum for more information.
          close-issue-message: This issue was closed because it has been stale for
            15 days with no activity.
          close-pr-message: This PR was closed because it has been stale for 30 days
            with no activity.
          days-before-issue-stale: 30
          days-before-pr-stale: 60
          days-before-issue-close: 45
          days-before-pr-close: 30
          exempt-draft-pr: true
          exempt-issue-labels: do-not-reap
          exempt-pr-labels: do-not-reap
          operations-per-run: 300
 

What changed

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow