Clean closed branch caches workflow (pandas-dev/pandas)
The Clean closed branch caches workflow from pandas-dev/pandas, explained and optimized by Latchkey.
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 Clean closed branch caches workflow from the pandas-dev/pandas repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-3-Clause license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
name: Clean closed branch caches
on:
schedule:
# 4:10 UTC daily
- cron: "10 4 * * *"
pull_request:
types:
- closed
permissions: {}
defaults:
run:
shell: bash -euxo pipefail {0}
jobs:
cleanup:
runs-on: ubuntu-24.04
if: github.repository_owner == 'pandas-dev'
steps:
- name: Clean closed pull request caches
if: github.event_name == 'pull_request'
env:
GH_TOKEN: ${{ github.token }}
run: >
gh cache delete
--repo pandas-dev/pandas
--all
--ref refs/pull/${{ github.event.pull_request.number }}/merge
--succeed-on-no-caches
- name: Clean all caches
if: github.event_name == 'schedule'
env:
GH_TOKEN: ${{ github.token }}
run: >
gh cache delete
--repo pandas-dev/pandas
--all
--succeed-on-no-caches
The same workflow, on Latchkey
Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.
name: Clean closed branch caches on: schedule: # 4:10 UTC daily - cron: "10 4 * * *" pull_request: types: - closed permissions: {} defaults: run: shell: bash -euxo pipefail {0} concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: cleanup: timeout-minutes: 30 runs-on: latchkey-small if: github.repository_owner == 'pandas-dev' steps: - name: Clean closed pull request caches if: github.event_name == 'pull_request' env: GH_TOKEN: ${{ github.token }} run: > gh cache delete --repo pandas-dev/pandas --all --ref refs/pull/${{ github.event.pull_request.number }}/merge --succeed-on-no-caches - name: Clean all caches if: github.event_name == 'schedule' env: GH_TOKEN: ${{ github.token }} run: > gh cache delete --repo pandas-dev/pandas --all --succeed-on-no-caches
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.