Skip to main content

Управление кэшами

Вы можете отслеживать, фильтровать и удалять кэши зависимостей, созданные в рабочих процессах.

В этой статье описывается управление кэшами с помощью веб-интерфейса GitHub, но вы также можете управлять ими:

Просмотр записей кэша

Веб-интерфейс можно использовать для просмотра списка записей кэша для репозитория. В списке кэша можно увидеть, сколько дискового пространства используется каждый кэш, когда кэш был создан, а также время последнего использования кэша.

  1. На GitHubперейдите на главную страницу репозитория. данных repositories.repositories.actions-tab %} 1. Под именем репозитория щелкните Actions.

    Снимок экрана: вкладки для репозитория github/docs. Вкладка "Действия" выделена оранжевым контуром.

  2. Просмотрите список записей кэша для репозитория.

    • Чтобы найти записи кэша, используемые для определенной ветви, щелкните раскрывающееся меню "Ветвь " и выберите ветвь. В списке кэша отображаются все кэши, используемые для выбранной ветви.
    • Чтобы найти записи кэша с определенным ключом кэша, используйте синтаксис key: key-name в поле "Кэши фильтров". В списке кэшей будут отображаться кэши из всех ветвей, где использовался ключ.

    Снимок экрана: список записей кэша.

Удаление записей кэша

Пользователи с write доступом к репозиторию могут использовать веб-интерфейс GitHub для удаления записей кэша.

  1. На GitHubперейдите на главную страницу репозитория. данных repositories.repositories.actions-tab %} 1. На GitHubперейдите на главную страницу репозитория.

  2. Справа от записи кэша, которую вы хотите удалить, щелкните .

    Снимок экрана: список записей кэша. Значок корзины, используемый для удаления кэша, выделен темным оранжевым контуром.

Принудительное удаление записей кэша

Кэши имеют ограничения области ветви, что означает, что некоторые кэши имеют ограниченные параметры использования. Дополнительные сведения об ограничениях области кэша см. в разделе Справочник по кэшированию зависимостей. Если кэши, ограниченные определенной ветвью, используют большую квоту хранилища, это может привести к созданию и удалению кэшей из default ветви с высокой частотой.

Например, репозиторий может открывать множество новых запросов на вытягивание, каждый из которых содержит собственные кэши, ограниченные этой ветвью. Эти кэши могут занять большую часть хранилища кэша для этого репозитория. После достижения максимального хранилища кэша политика вытеснения кэша создаст пространство, удалив кэши в порядке последней даты доступа, начиная с последней до последней. Чтобы предотвратить регулирование кэша при этом, можно настроить рабочие процессы для удаления кэшей быстрее, чем политика вытеснения кэша. Для удаления кэшей для определенных ветвей можно использовать GitHub CLI.

В следующем примере рабочий процесс используется gh cache для удаления до 100 кэшей, созданных ветвью после закрытия запроса на вытягивание.

Чтобы запустить следующий пример в запросах на вытягивание между репозиториями или запросах на вытягивание из вилок, можно активировать рабочий процесс с событием pull_request_target . Если вы используете pull_request_target для активации рабочего процесса, следует учитывать вопросы безопасности. Дополнительные сведения см. в разделе События, инициирующие рабочие процессы.

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

Кроме того, вы можете использовать API для автоматического перечисления или удаления всех кэшей в собственном темпе. Дополнительные сведения см. в разделе Конечные точки REST API для кэша GitHub Actions.