En este artículo se describe la administración de cachés con la interfaz web de GitHub, pero también puedes administrarlas:
- Mediante la API REST. Consulta Puntos de conexión de API de REST para la caché de Acciones de GitHub.
- Con el subcomando
gh cache
desde la línea de comandos. Consulta la documentación de la CLI de GitHub.
Visualización de entradas de caché
Puedes usar la interfaz web para ver una lista de entradas de caché de un repositorio. En la lista de caché, puedes ver cuánto espacio en disco usa cada memoria caché, cuándo se creó la memoria caché y cuándo se usó por última vez la memoria caché.
-
En GitHub, navegue hasta la página principal del repositorio.
-
En el nombre del repositorio, haz clic en Acciones.
-
En la barra lateral izquierda, en la sección "Administración", haz clic en Cachés.
-
Revisa la lista de entradas de caché del repositorio.
- Para buscar entradas de caché usadas para una rama específica, haz clic en el menú desplegable Rama y selecciona una rama. La lista de memorias caché mostrará todas las memorias caché usadas para la rama seleccionada.
- Para buscar entradas de caché con una clave de caché específica, usa la sintaxis
key: key-name
en el campo Filtrar memorias cachés. La lista de memorias caché mostrará las memorias caché de todas las ramas en las que se usó la clave.
Eliminación de entradas de caché
Los usuarios con acceso write
a un repositorio pueden usar la interfaz web de GitHub para eliminar entradas de caché.
-
En GitHub, navegue hasta la página principal del repositorio.
-
En el nombre del repositorio, haz clic en Acciones.
-
En la barra lateral izquierda, en la sección "Administración", haz clic en Cachés.
-
A la derecha de la entrada de caché que quieres eliminar, haz clic en .
Eliminación forzosa de entradas de caché
Las cachés tienen restricciones de ámbito de rama vigentes, lo que significa que algunas cachés tienen opciones de uso limitadas. Para más información sobre las restricciones de ámbito de caché, consulta Dependency caching reference. Si las cachés limitadas a una rama específica usan una gran cantidad de cuota de almacenamiento, es posible que las cachés de la rama default
se creen y eliminen con una frecuencia alta.
Por ejemplo, un repositorio podría tener muchas nuevas solicitudes de incorporación de cambios abiertas, cada una con cachés propias restringidas a esa rama. Estas cachés podrían ocupar la mayoría del almacenamiento en caché de ese repositorio. Una vez que un repositorio haya alcanzado su almacenamiento máximo de caché, la directiva de expulsión de caché creará espacio eliminando las cachés en orden de la última fecha de acceso, de más antigua a más reciente. Para evitar la eliminación de cachés cuando esto sucede, puedes configurar flujos de trabajo de eliminación de cachés con una cadencia más rápida que la directiva de expulsión de caché. Puedes utilizar GitHub CLI para borrar cachés de ramas específicas.
En el siguiente flujo de trabajo de ejemplo se usa gh cache
para eliminar hasta 100 cachés creadas por una rama una vez que se cierra una solicitud de incorporación de cambios.
Para ejecutar el ejemplo siguiente en solicitudes de incorporación de cambios entre repositorios o solicitudes de incorporación de cambios de bifurcaciones, puedes desencadenar el flujo de trabajo con el evento pull_request_target
. Si usas pull_request_target
para desencadenar el flujo de trabajo, hay consideraciones de seguridad que debes tener en cuenta. Para más información, consulta Eventos que desencadenan flujos de trabajo.
name: Cleanup github runner caches on closed pull requests
on:
pull_request:
types:
- closed
jobs:
cleanup:
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: Cleanup
run: |
echo "Fetching list of cache keys"
cacheKeysForPR=$(gh cache list --ref $BRANCH --limit 100 --json id --jq '.[].id')
## Setting this to not fail the workflow while deleting cache keys.
set +e
echo "Deleting caches..."
for cacheKey in $cacheKeysForPR
do
gh cache delete $cacheKey
done
echo "Done"
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge
Como alternativa, puedes usar la API para listar o eliminar automáticamente todas las cachés en tu propia cadencia. Para más información, consulta Puntos de conexión de API de REST para la caché de Acciones de GitHub.