Cet article décrit la gestion des caches avec l’interface web GitHub, mais vous pouvez également les gérer :
- Utilisation de l’API REST. Consultez Points de terminaison REST pour l’API cache GitHub Actions.
- Avec la sous-commande
gh cache
à partir de la ligne de commande. Consultez la Documentation de l’interface CLI de GitHub.
Affichage des entrées de cache
Vous pouvez utiliser l’interface web pour afficher une liste des entrées de cache d’un référentiel. Dans la liste des caches, vous pouvez voir la quantité d’espace disque utilisée par chaque cache, la date de création du cache et la date de la dernière utilisation du cache.
-
Sur GitHub, accédez à la page principale du référentiel.
-
Sous le nom de votre dépôt, cliquez sur Actions.
-
Dans la barre latérale gauche, sous la section « Gestion », cliquez sur Caches.
-
Passez en revue la liste des entrées de cache pour le référentiel.
- Pour rechercher les entrées de cache utilisées pour une branche spécifique, cliquez sur le menu déroulant Branche et sélectionnez une branche. La liste des caches affiche tous les caches utilisés pour la branche sélectionnée.
- Pour rechercher des entrées de cache avec une clé de cache spécifique, utilisez la syntaxe
key: key-name
dans le champ Filtrer les caches. La liste des caches affiche les caches de toutes les branches où la clé a été utilisée.
Suppression d’entrées de cache
Les utilisateurs ayant un accès write
à un référentiel utiliser l’interface web GitHub pour supprimer les entrées de cache.
-
Sur GitHub, accédez à la page principale du référentiel.
-
Sous le nom de votre dépôt, cliquez sur Actions.
-
Dans la barre latérale gauche, sous la section « Gestion », cliquez sur Caches.
-
À droite de l’entrée du cache que vous souhaitez supprimer, cliquez sur .
Suppression forcée d’entrées de cache
Les caches ont des restrictions d’étendue de branche en place, ce qui signifie que certains caches ont des options d’utilisation limitée. Pour plus d’informations sur les restrictions d’étendue de cache, consultez Référence sur la mise en cache des dépendances. Si les caches limités à une branche spécifique utilisent beaucoup de quota de stockage, cela peut entraîner la création et la suppression des caches de la branche default
à une fréquence élevée.
Par exemple, un dépôt peut avoir de nombreuses nouvelles demandes de tirage ouvertes, chacune avec ses propres caches qui sont limités à cette branche. Ces caches peuvent occuper la majorité du stockage du cache pour ce dépôt. Une fois qu’un référentiel a atteint sa capacité maximale de stockage dans le cache, la stratégie d’éviction du cache libère de l’espace en supprimant les caches par ordre de date d’accès, du plus ancien au plus récent. Afin d’éviter un écroulement du cache dans ce cas, vous pouvez configurer des workflows de façon à supprimer les caches à une cadence plus rapide que celle de la stratégie d’éviction du cache. Vous pouvez utiliser la GitHub CLI pour supprimer des caches pour des branches spécifiques.
L’exemple de workflow suivant utilise gh cache
pour supprimer jusqu’à 100 caches créés par une branche une fois qu’une demande de tirage est fermée.
Pour exécuter l’exemple suivant sur des demandes de tirage entre référentiels ou des demandes de tirage à partir de duplications, vous pouvez déclencher le flux de travail avec l’événement pull_request_target
. Si vous utilisez pull_request_target
pour déclencher le flux de travail, des considérations de sécurité sont à prendre en compte. Pour plus d’informations, consultez « Événements qui déclenchent des flux de travail ».
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
Vous pouvez également utiliser l’API pour répertorier ou supprimer l’ensemble des caches à votre propre rythme. Pour plus d’informations, consultez « Points de terminaison REST pour l’API cache GitHub Actions ».