Jenkins

[Jenkins] Build 히스토리 삭제 - 1

비번변경 2021. 5. 23. 18:27

 

Jenkins는 빌드 후, 그 결과에 대한 파일을 아래의 경로 밑에 빌드 번호 디렉터리를 생성해서 저장한다.

JENKINS_JOBS/JOB_NAME/builds

# 기본 경로
/var/lib/jenkins/jobs/JOB_NAME/builds

 

이렇게 저장된 파일은 아래 사진처럼 웹에서 빌드 결과를 조회할 때 사용되는데,

 

Jenkins 빌드 Console Output

오래된 빌드 결과는 가지고 있어 봐야 크게 쓸 곳은 없다. 특히 실시간에 가깝게 처리하는 Job은 디스크 용량이나 파일 수를 감당할 수 없어 정리가 필요하다.

따라서 이 글은 Jenkins 빌드 결과 삭제 방법에 대해 다룬다.

 

1. 웹 상에서

1.1 특정 빌드만 삭제

삭제할 작업의 삭제할 빌드를 선택해 들어간다.

 

'이 빌드를 삭제' 클릭

표시한 빌드 삭제 버튼을 클릭하면 된다.

 

1.2 오래된 빌드 삭제 기능 사용

2021.12.12 - [Jenkins] Build 히스토리 삭제 - 2 글 참고할 것.

 

 

2. 터미널

2.1. 빌드 결과 저장 경로로 이동

cd JENKINS_HONE/JOB_NAME/builds

여기서 ls 또는 ll 명령어로 누적되어 있는 빌드 결과와 lastFailedBuild, LastStableBuild와 같은 고정 링크를 확인할 수 있다. 고정 링크는 Symbolic Link로 연결되어 있다.

 

2.2. 빌드 삭제

일반 디렉터리 삭제하는 것과 동일한 방법으로 삭제하면 된다.

rm -rf <BUILD_NUMBER>

여기서 오래된, 예로 들면 2개월 이전 빌드 히스토리는 모조리 삭제하고 싶다면 find 명령어를 이용해 삭제하면 된다.

# 2개월 이전 빌드 찾기
find ./ -maxdepth 1 -mtime +61 -type d
# -maxdepth : 검색 디렉토리 깊이 조정
# -mtime : modification time. 수정 시간 기준. +는 기준일 이전을 뜻한다.
# -type : 검색 파일 타입 지정. d는 디렉토리를 뜻한다.

# 2개월 이전 빌드 삭제
find ./ -maxdepth 1 -mtime +61 -type d -exec rm -rf {} \;
# -exec : 검색 파일에 대해 실행할 명령 지정
# {} : 찾은 파일 대입
# \; : 실행 명령어의 끝을 알림

참고로 exec 옵션을 사용하는 경우, 실행할 명령어의 범위는 exec 다음부터 ;(세미콜론)을 만날 때까지이다. 하지만 linux에서 세미콜론은 다중 명령을 위한 특수문자이기 때문에 find 명령은 실행시킬 명령어의 끝이 어딘지 알 수 없게 된다. 따라서 세미콜론 앞에 \를 붙여 특수문자의 의미를 제거해야 한다.

 

2.3. Reload Configuration from Disk

&#39;Reload Configuration from Disk&#39; 클릭

빌드 삭제를 완료했으면, Jenkins 관리 탭에서 Reload Configuration from Disk를 실행한다.

아마 웹 상에 남아있던 빌드 링크가 사라질 것이다.

 

……왜 추측하는 듯한 어조로 적어놓냐면, Reload Configuration from Disk을 못 했기 때문이다.

이 작업은 Jenkins 재시작은 아니고, Jenkins 프로세스를 유지하면서 설정을 업데이트하는 것으로 알고 있는데 아주 잠깐 Jenkins를 사용하지 못하는 것으로 알고 있다. 작업 수가 많을수록 좀 더 그럴 수 있고. 

내가 작업한 Jenkins에는 실시간으로 돌고 있는 작업이 있는 탓에 작업에 영향을 줄 수도 있어 실제로 실행하지는 못 했다. 다행히 문제는 아직 없었고, 웹 상에서의 링크도 다음 날 정도 되면 사라져 있었다. 이건 아마 workspace clean up 설정 때문이 아닐까 의심 중이다.

 

 

+ 작업 후 몇 개월이 지나서 결과를 적어둔다. 결과적으로 Reload를 하지 않아도 아무런 이상이 없었다.

중간에 젠킨스나 서버 재기동이 있었기 때문에 마무리까지 다 된 상태지만, 서버 재기동 전에도 이용에는 큰 이상이 없었다. 다만 웹 상에서 삭제한 빌드 이력의 URL이 남아있긴 했으니, 그 부분만 염두해두면 될 것 같다.