이 문서에서는 GitHub 웹 인터페이스를 통한 캐시 관리에 대해 설명하지만 추가적으로 다음을 관리할 수 있습니다.
- REST API를 사용합니다. GitHub Actions 캐시에 대한 REST API 엔드포인트을(를) 참조하세요.
- 명령줄의
gh cache
하위 명령 사용. GitHub CLI 설명서를 참조하세요.
캐시 항목 보기
웹 인터페이스를 사용하여 리포지토리에 대한 캐시 항목 목록을 볼 수 있습니다. 캐시 목록에서는 각 캐시가 사용하는 디스크 공간, 캐시가 생성된 시기 및 캐시가 마지막으로 사용된 시기를 확인할 수 있습니다.
-
GitHub에서 리포지토리의 기본 페이지로 이동합니다.
-
리포지토리 이름 아래에서 작업을 클릭합니다.
-
왼쪽 사이드바의 "관리" 섹션에서 캐시를 클릭합니다.
-
리포지토리의 캐시 항목 목록을 검토합니다.
- 특정 분기에 사용되는 캐시 항목을 검색하려면 분기 드롭다운 메뉴를 클릭하고 분기를 선택합니다. 캐시 목록에는 선택한 분기에 사용되는 모든 캐시가 표시됩니다.
- 특정 캐시 키가 있는 캐시 항목을 검색하려면 필터 캐시 필드의 구문
key: key-name
을(를) 사용합니다. 캐시 목록에는 키가 사용된 모든 분기의 캐시가 표시됩니다.
캐시 항목 삭제
리포지토리에 대한 write
액세스 권한을 가진 사용자는 GitHub 웹 인터페이스를 사용하여 캐시 항목을 삭제할 수 있습니다.
-
GitHub에서 리포지토리의 기본 페이지로 이동합니다.
-
리포지토리 이름 아래에서 작업을 클릭합니다.
-
왼쪽 사이드바의 "관리" 섹션에서 캐시를 클릭합니다.
-
삭제하려는 캐시 항목의 오른쪽에 있는 을(를) 클릭합니다.
캐시 항목 강제 삭제
캐시에는 분기 범위 제한이 있습니다. 즉, 일부 캐시에는 사용 옵션이 제한되어 있습니다. 캐시 범위 제한에 대한 자세한 내용은 Dependency caching reference을(를) 참조하세요. 특정 분기로 제한된 캐시가 많은 스토리지 할당량을 사용하는 경우 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를 사용하여 자체 주기에 따라 모든 캐시를 자동으로 나열하거나 삭제할 수 있습니다. 자세한 내용은 GitHub Actions 캐시에 대한 REST API 엔드포인트을(를) 참조하세요.