51 lines
2.2 KiB
YAML
51 lines
2.2 KiB
YAML
# note: place this as the last step of the job, so the new cache is saved by "Post ccache" right after the old one is cleared
|
|
name: "ccache-clear"
|
|
description: "Delete GitHub Actions caches matching a key prefix, oldest first"
|
|
inputs:
|
|
key:
|
|
description: "Cache key prefix to match and delete"
|
|
required: true
|
|
older:
|
|
description: "Only delete caches created more than this long ago (e.g. 90m, 1h, 1d). By default all matching caches are deleted"
|
|
required: false
|
|
default: ""
|
|
min:
|
|
description: "Stop deleting if fewer than this many caches would remain (e.g. 1). By default there is no minimum"
|
|
required: false
|
|
default: "0"
|
|
dry-run:
|
|
description: "Only print the caches that would be deleted, without deleting them"
|
|
required: false
|
|
default: "false"
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Install GitHub CLI if missing
|
|
shell: bash
|
|
run: |
|
|
# e.g. in container jobs, where it is not preinstalled
|
|
if ! command -v gh >/dev/null 2>&1; then
|
|
echo "GitHub CLI not found, installing..."
|
|
if ! command -v curl >/dev/null 2>&1; then
|
|
apt-get update >/dev/null 2>&1 || true
|
|
apt-get install -y curl >/dev/null 2>&1 || true
|
|
fi
|
|
mkdir -p -m 755 /etc/apt/keyrings
|
|
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null
|
|
chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
|
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list
|
|
apt-get update >/dev/null 2>&1 || true
|
|
apt-get install -y gh || { echo "Failed to install GitHub CLI (gh)" >&2; exit 1; }
|
|
fi
|
|
command -v gh >/dev/null 2>&1 || { echo "GitHub CLI (gh) is required but could not be installed" >&2; exit 1; }
|
|
|
|
- name: Clear caches
|
|
shell: bash
|
|
run: |
|
|
bash scripts/ccache-clear.sh \
|
|
--key "${{ inputs.key }}" \
|
|
--older "${{ inputs.older }}" \
|
|
--min "${{ inputs.min }}" \
|
|
${{ inputs.dry-run == 'true' && '--dry-run' || '' }}
|