디스크 공간 최적화: GitHub Actions Runner의 디스크 사용량 관리 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
GitHub Actions를 사용하는 개발자 및 DevOps 엔지니어. 중간 수준의 CI/CD 파이프라인 경험을 가진 대상자.
핵심 요약
- 디스크 공간 부족 문제 해결 방법:
df -h
,du -h
명령어로 디스크 사용량 분석 후 불필요한 도구 및 SDK 제거. - 주요 디렉터리 제거 대상:
/usr/share/swift
,/usr/local/lib/android
,/opt/hostedtoolcache
등의 디렉터리. - 효과적인 클리닝 스크립트:
sudo rm -rf
로 특정 디렉터리 삭제 및docker system prune
명령어로 Docker 캐시 정리.
섹션별 세부 요약
1. 문제 발생 배경
- GitHub Actions Runner는 72GB 디스크 공간을 제공하지만, 기본 설치된 도구와 런타임으로 인해 50GB 이상이 사전에 사용됨.
- Docker 이미지 빌드 중 디스크 공간 부족 오류(
You are running out of disk space
) 발생. - 예시 오류 메시지: "Free space left: 54 MB"
2. 디스크 사용량 분석 방법
df -h
명령어로 전체 디스크 사용량 확인.du -h -d1 /
명령어로 상위 디렉터리별 사용량 정렬.find / -type f -exec du -h {} +
명령어로 파일 단위 사용량 분석.
3. 주요 공간 소모 원인
- /usr: Java, Swift, .NET 등의 시스템 소프트웨어 및 런타임.
- /opt: CodeQL, Go, 언어별 도구의 캐시.
- /mnt: 빌드 중 임시 파일.
- /home: Rust 툴체인, runner-specific 캐시.
- 예시: Android SDK (
/usr/local/lib/android/sdk
)는 약 6GB를 차지.
4. 클리닝 스크립트 구현
- Aggressive cleanup 단계: 불필요한 도구 및 디렉터리 제거.
sudo rm -rf /usr/lib/jvm
(Java 제거)sudo rm -rf /usr/share/dotnet
(.NET 제거)docker system prune -af
(Docker 캐시 정리)- 결과: 20GB 이상의 디스크 공간 회복.
5. 모니터링 및 로깅
df
,du
,find
명령어로 생성된 로그를actions/upload-artifact
를 통해 아티팩트로 저장.- 추후 디스크 사용량 트렌드 분석 및 문제 디버깅에 활용.
결론
- GitHub Actions Runner의 디스크 공간 문제는 불필요한 도구 제거로 해결 가능.
- 권장사항:
Aggressive cleanup
스크립트를 GitHub Actions 워크플로우에 추가하고, 클라우드 runner 크기 조정 전에 클리닝을 수행. - 예시: Node.js 프로젝트의 경우 Java, .NET, Android SDK 제거.