Skip to main content

Gestion des caches

Vous pouvez surveiller, filtrer et supprimer des caches de dépendances créés à partir de vos flux de travail.

Cet article décrit la gestion des caches avec l’interface web GitHub, mais vous pouvez également les gérer :

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.

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépôt, cliquez sur Actions.

    Capture d’écran des onglets du référentiel « github/docs ». L’onglet « Actions » est mis en surbrillance avec un encadré orange.

  3. Dans la barre latérale gauche, sous la section « Gestion », cliquez sur Caches.

  4. 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.

    Capture d’écran de la liste des entrées de cache.

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.

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépôt, cliquez sur Actions.

    Capture d’écran des onglets du référentiel « github/docs ». L’onglet « Actions » est mis en surbrillance avec un encadré orange.

  3. Dans la barre latérale gauche, sous la section « Gestion », cliquez sur Caches.

  4. À droite de l’entrée du cache que vous souhaitez supprimer, cliquez sur .

    Capture d’écran de la liste des entrées de cache. Une icône de corbeille, utilisée pour supprimer un cache, est mise en évidence avec un encadré orange foncé.

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 ».