Jenkins

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

비번변경 2024. 5. 24. 18:47

개요

Jenkins Job 별로 빌드 히스토리를 관리하는 것에 대해서는 2021.05.23-[Jenkins] Build 히스토리 삭제 - 1, 2021.12.01-[Jenkins] Build 히스토리 삭제 - 2 글에서 살펴본 적이 있었다. 그런데 최근 주변에서 Jenkins 빌드 히스토리로 인한 디스크 부족으로 대응하는 모습을 보면서 Job 별로 설정할 수 있는 Discard Old Builds에 대한 기본값을 설정해두면 좋을 것 같다는 생각을 하게 되었다.

 

관련해서 찾아보니 Jenkins 전체 대상으로 빌드 삭제 기능을 제공하는 플러그인 Build Discarder가 존재하는 것을 확인할 수 있었다. 이 글에서는 좀 더 효율적으로 Jenkins를 관리할 수 있도록 Build Discarder를 설정하는 방법에 대해 적어둔다.

 

 

Build Discarder

Build Discarder는 Job 별로 지정할 수 있는 Discard Old Builds 설정에 대한 기본값을 제공하기 위한 Jenkins 플러그인이다. 따라서 Build Discarder을 설정하면 Discard Old Builds 설정이 없는 Job에 대해서 동작하며, Job에 Discard Old Builds 설정이 활성화되어 있으면 해당 설정이 우선순위를 갖는다.

Jenkins 2.346.1부터 사용할 수 있다.

 

 

사용법

1. Configure System로 이동

Manage Jenkins(Jenkins 관리) > Configure System에 접근한다.

 

2. Global Build Discarders 확인

시스템 구성 페이지에서 Global Build Discarders가 있는지 확인한다. 

만약 없다면 사용 중인 Jenkins 버전이 2.346.1 미만일 수 있다. 이 경우 Jenkins 버전 업그레이드를 고려해야 한다.

 

3. Specific Build Discarder 추가

Add 버튼 클릭 후 Specific Build Discarder를 선택한다.

그러면 Job 별로 설정할 수 있는 Discard Old Builds 기능과 동일한 폼이 나타난다.

상황에 알맞게 보관 주기를 지정하면 된다. 단, Jenkins 전체 시스템에 대한 설정이므로 지나치게 엄격하게 지정하는 것은 지양하는 편이 좋겠다. 참고로 Specific Build Discarder는 Discard Old Builds 기능과 동일하게 설정 적용 후 build가 발생할 때마다 동작한다.

 

 

테스트

마침 기존에 Discard Old Builds 기능을 활성화하지 않은 Job과 활성화한 Job이 모두 있어 기능 테스트를 해보려고 한다.

 

먼저 Build Discarder를 추가하기 전의 상태는 다음과 같다.

Discard Old Builds 비활성화 Discard Old Builds 활성화 (최대 보관 개수 : 5)

Discard Old Builds 기능을 활성화한 Job은 최대 보관 개수만큼의 이력이 남아있는 반면, Discard Old Builds 기능을 활성화하지 않은 Job은 30개 이상의 빌드 이력이 남아있는 모습을 확인했다.

 

이 상태에서 Global Build Discarder 구성을 추가한다.

주기적으로 빌드를 하지 않는 Job도 있기 때문에 최대 보관 갯수를 지정하는 것이 적절해보였다. 여유 있게 20으로 지정하고 저장한다.

 

이제 Global Build Discarder 구성이 정상적으로 동작하는지 테스트하기 위해 각 Job을 빌드하여 빌드 이력이 어떻게 남아있는지 확인한다.

Discard Old Builds 비활성화 Discard Old Builds 활성화 (최대 보관 개수 : 5)

Discard Old Builds 기능을 활성화한 기존과 마찬가지로 Job은 최대 보관 개수만큼의 이력이 남아있다. 반면 Discard Old Builds 기능을 활성화하지 않은 Job은 20개의 빌드 이력이 남아있는 모습을 확인할 수 있다.

즉, Global Build Discarder 구성은 Job 별 활성화한 Discard Old Builds 설정에 영향을 미치지 않고 동작한다.

 

 

참고 문서

https://plugins.jenkins.io/build-discarder/

https://community.jenkins.io/t/how-to-enforce-retention-period-of-builds-in-jenkins-at-the-global-level/8132