피드로 돌아가기
Dev.toDevOps
원문 읽기
불충분한 Path 제약 조건으로 인한 CI Runner 프로세스 강제 종료 및 서비스 중단
My CI Runner Was Killed by My Own Script: The Dark Side of Cleanup
AI 요약
Context
Self-hosted GitHub Actions Runner 환경에서 Disk Space 부족 문제 해결을 위해 자동 Cleanup Script를 도입한 구조. Docker Build Cache 및 Unused Images로 인한 최대 56GB의 디스크 점유 상태를 관리하려는 목적임.
Technical Solution
find명령어를 통한_work디렉토리 내 7일 이상 경과된 파일의 일괄 삭제 로직 구현maxdepth및prune옵션 부재로 인한 Runner Core Binary 및 Configuration 파일의 의도치 않은 삭제 발생- Runner 프로세스가 동작 중인 Working Directory 내 필수 파일을 제거함으로써 서비스의 Graceful Shutdown 유발
- 파일 시스템 수준의 의존성을 고려하지 않은 단순 시간 기반 삭제 정책의 위험성 확인
- 서비스 상태가
active (exited)로 표시되는 비정상 종료 현상을 통한 Root Cause 분석 수행
실천 포인트
1. Cleanup Script 작성 시 `maxdepth`를 설정하여 삭제 범위의 깊이를 엄격히 제한할 것
2. `/tmp`나 `_work` 등 애플리케이션 실행 경로 내에서는 화이트리스트 기반의 삭제 대상 선정 방식을 채택할 것
3. 중요 파일 삭제 전 `dry-run` 모드를 구현하여 삭제 대상 리스트를 사전 검증할 것
4. 인프라 관리 스크립트 도입 시 서비스 생명주기와 파일 의존성을 매핑한 영향도 분석을 선행할 것