Justin의 개발 로그
article thumbnail
Published 2019. 11. 4. 17:01
Jenkins 로그 삭제 프로그래밍/Jenkins

상용 배치를 Jenkins로 운영하다보니 상용 배치 서버의 File Storage가 너무 빨리 줄어드는 점이 이상해서 파악 및 조치를 했다.

 

배치 어플리케이션에서 쌓이는 로그 외에도 아래 경로에 각 배치(Job)별로 Console 로그가 또 쌓이고 있더라...

 

 

버튼 클릭으로 로그 삭제

버튼 클릭으로 로그를 지우려면 Delete log 플러그인을 설치한다.


/var/lib/jenkins/jobs

 

 

Groovy Script로 자동 로그 삭제

아래 Post를 참고함

https://blog.clairvoyantsoft.com/jenkins-cleanup-workspace-reduce-disk-usage-18310097d3ef

 

Jenkins Workspace Cleanup - Automate folders clean up for all jobs

If you are here, your Jenkins machine might be loaded with hundreds of jobs that are occupying a major of your disk-space with its…

blog.clairvoyantsoft.com

 

1. Jenkins 관리 > Plugin 설치 > Groovy postbuild 

 

2. Jenkins > Item 추가

 

3. 빌드 유발 > Build periodically

주기 셋팅

 

 

4. 빌드 후 조치 추가 > Groovy Postbuild

 

 

5. Groovy script 영역에 아래 스크립트 추가

maxlogdays는 로그를 보관할 기간(일) 입니다.

import jenkins.*
import jenkins.model.*
import hudson.*
import hudson.model.*

int maxlogdays = 7

manager.listener.logger.println maxlogdays +"일 이상 경과된 로그 삭제" 

for (job in Jenkins.instance.items) 
{
  int count = 0
   
  job.getBuilds().byTimestamp(1, System.currentTimeMillis() - (1000L * 60 * 60 * 24 * maxlogdays)).each 
  {
    manager.listener.logger.println it.getLogFile().toString() + "is deleted."
    it.delete()  //빌드 기록 자체를 삭제
    
    //it.getLogFile().delete()	//로그 파일만 삭제
    //it.getLogFile().createNewFile()  //로그 파일 0으로 생성
  }
}

 

Jenkins core API는 아래 링크에서 찾아보실 수 있습니다.

https://javadoc.jenkins.io/

 

Jenkins core 2.202 API

 

javadoc.jenkins.io

 

Jenkins로그뿐 아니라 어플리케이션 로그도 삭제하지 않으면 파일 스토리지 사용량을 모두 잡아내지 못함

어플리케이션 로그 삭제는 아래 링크 참고

https://justinadpark.tistory.com/59

profile

Justin의 개발 로그

@라이프노트

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!