캐시 관리하기
캐시 관리하기
워크플로우에서 생성된 종속성 캐시를 모니터링하고, 필터링하고, 삭제할 수 있어요.
출처: 문서
본문
워크플로우에서 생성된 종속성 캐시를 모니터링, 필터링, 삭제할 수 있어요.
이 문서는 GitHub 웹 인터페이스로 캐시를 관리하는 방법을 설명하지만, 다음과 같은 방법으로도 관리할 수 있어요:
- REST API 사용. REST API endpoints for GitHub Actions cache 참고.
- 명령줄의
gh cache하위 명령 사용. GitHub CLI documentation 참고.
캐시 항목 보기
웹 인터페이스를 사용해 저장소의 캐시 항목 목록을 볼 수 있어요. 캐시 목록에서 각 캐시가 사용하는 디스크 공간, 캐시가 생성된 시기, 캐시가 마지막으로 사용된 시기를 확인할 수 있어요.
-
GitHub에서 저장소의 메인 페이지로 이동하세요.
-
저장소 이름 아래에서 Actions을 클릭하세요.

-
왼쪽 사이드바의 "Management" 섹션에서 Caches를 클릭하세요.
-
저장소의 캐시 항목 목록을 검토하세요.
- 특정 브랜치에 사용된 캐시 항목을 검색하려면 Branch 드롭다운 메뉴를 클릭하고 브랜치를 선택하세요. 캐시 목록은 선택한 브랜치에 사용된 모든 캐시를 표시해요.
- 특정 캐시 키가 있는 캐시 항목을 검색하려면 Filter caches 필드에
key: key-name구문을 사용하세요. 캐시 목록은 해당 키가 사용된 모든 브랜치의 캐시를 표시해요.

캐시 항목 삭제하기
저장소에 write 권한이 있는 사용자는 GitHub 웹 인터페이스로 캐시 항목을 삭제할 수 있어요.
-
GitHub에서 저장소의 메인 페이지로 이동하세요.
-
저장소 이름 아래에서 Actions을 클릭하세요.

-
왼쪽 사이드바의 "Management" 섹션에서 Caches를 클릭하세요.
-
삭제하려는 캐시 항목 오른쪽에서 을 클릭하세요.

캐시 항목 강제 삭제하기
캐시에는 브랜치 범위 제한이 있어 일부 캐시는 사용 옵션이 제한돼요. 캐시 범위 제한에 대한 자세한 내용은 Dependency caching reference를 참고하세요. 특정 브랜치로 제한된 캐시가 저장소 할당량을 많이 사용하면, default 브랜치의 캐시가 높은 빈도로 생성되고 삭제될 수 있어요.
예를 들어 저장소에 새 풀 리퀘스트가 많이 열려 있고, 각각 그 브랜치로 제한된 자체 캐시가 있다고 가정해 보세요. 이 캐시들이 저장소 캐시 저장 공간의 대부분을 차지할 수 있어요. 저장소가 최대 캐시 저장 공간에 도달하면 캐시 퇴거(eviction) 정책이 마지막 접근 날짜 순서(오래된 것에서 최근 순)로 캐시를 삭제해 공간을 확보해요. 이런 경우 캐시 스래싱(thrashing)을 막으려면 캐시 퇴거 정책보다 빠른 주기로 캐시를 삭제하도록 워크플로우를 설정할 수 있어요. GitHub CLI를 사용해 특정 브랜치의 캐시를 삭제할 수 있습니다.
다음 예시 워크플로우는 gh cache를 사용해 풀 리퀘스트가 닫히면 브랜치가 생성한 최대 100개의 캐시를 삭제해요.
교차 저장소 풀 리퀘스트나 포크에서 온 풀 리퀘스트에서 다음 예시를 실행하려면 pull_request_target 이벤트로 워크플로우를 트리거할 수 있어요. pull_request_target으로 워크플로우를 트리거하는 경우 명심해야 할 보안 고려 사항이 있어요. 자세한 내용은 Events that trigger workflows를 참고하세요.
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 endpoints for GitHub Actions cache를 참고하세요.