Owl Life

젠킨스의 build description을 커스텀 해보자. [description setter plugin] 본문

Jenkins

젠킨스의 build description을 커스텀 해보자. [description setter plugin]

Owl Life 2019. 10. 29. 22:18
반응형

 

젠킨스의 빌드 히스토리에 보여지는 설명 부분을 어떻게 커스텀 하는지 알아보도록 하겠습니다.

사용 용도에 따라 다양한 정보들을 노출 시킬수 있겠지만, 본 포스팅에서는 빌드된 apk 파일명과 용량. 그리고 이전 빌드 산출물 대비 용량이 어떻게 변하였는지를 노출 시켜보도록 하겠습니다.

description setter plugin 설치

플러그인 관리 페이지에 접근 후 "Available" 탭에서 description setter plugin을 검색 후 설치합니다. 젠킨스 재시작까지 완료 하셔야 합니다.

워크스페이스 Configure

워크스페이스의 Configure 메뉴로 진입 후 execute shell에 새로운 항목을 추가해줍니다. 이미 추가된 execute shell 항목이 있다면 그 하단에 추가하여 마지막에 수행 될 수 있도록 합니다.

 

본 예제 사용한 샘플 스크립트를 첨부하니 참고 바랍니다.

#!/bin/bash -xe
set +x

APK_NAME="app-debug.apk"
FILE_NAME_FOR_APK_SIZE="prev_apk_size.tmp"

# 현재 빌드된 APK 사이즈 계산 (in KB)
CUR_APK_SIZE=$(ls -lk app/build/outputs/apk/debug/$APK_NAME | tr -s " " | cut -d " " -f5)
CUR_APK_SIZE_IN_KB="$(($CUR_APK_SIZE/1024))"

# 이전에 빌드된 APK 사이즈와 비교 후 차이 계산
PREV_APK_SIZE=0
DIFF_APK_SIZE_IN_KB=0
if [ -f "$FILE_NAME_FOR_APK_SIZE" ]; then
    PREV_APK_SIZE=`cat $FILE_NAME_FOR_APK_SIZE`
    PREV_APK_SIZE_IN_KB="$(($PREV_APK_SIZE/1024))"
    
    DIFF_APK_SIZE_IN_KB="$(($CUR_APK_SIZE_IN_KB-$PREV_APK_SIZE_IN_KB))"
fi
echo cur $CUR_APK_SIZE byte
echo prev $PREV_APK_SIZE byte

# 현재 APK 사이즈를 파일에 저장. (in byte)
echo $CUR_APK_SIZE > $FILE_NAME_FOR_APK_SIZE

# Description setter
echo [BUILD_DESCRIPTION] "$APK_NAME $CUR_APK_SIZE_IN_KB"KB "("$DIFF_APK_SIZE_IN_KB"KB)"

 

다음과 같은 과정으로 스크립트가 실행됩니다.

1. 빌드된 산출물의 apk size를 읽어옵니다. byte 단위로 가져온 후 KB로 치환해줍니다.

2. 이전에 빌드된 산출물의 사이즈가 파일에 저장되어 있다면 사이즈를 읽어온 후에 diff 값을 계산해줍니다.

3. 다음 빌드에 사용하기 위하여 현재 산출물의 사이즈는 다시 "prev_apk_size.tmp" 라는 파일에 저장시켜줍니다.

4. 빌드 히스토리에 보여줄 description을 콘솔에 출력합니다.

    콘솔에 출력하는 이유는, 적용된 플러그인이 콘솔에 출력된 텍스트로부터 정규식을 통하여 조건에 해당하는 텍스트를 가져와서 그대로 빌드 히스토리에 보여주도록 되어 있기 때문입니다. "[BUILD_DESCRIPTION]"라는 prefix를 붙인 이유도 정규식에서 이용하기 위함입니다.

 

 

이제, Add post-build action 으로부터 Set build description을 선택 후 항목을 추가해줍니다.

정규식 입력란에 아래와 같이 입력해줍니다. 띄워쓰기가 맞지 않아도 제대로 값을 읽어올수가 없으니 주의하셔야 합니다.

\[BUILD_DESCRIPTION\] (.*)

 

Description은 몇개의 라인을 표시할것인지를 나타냅니다. \1\2\3 과 같이 사용이 가능하며 본 샘플은 한줄만 표시하기에 \1을 입력하였습니다.

 

 

저장 후 빌드를 하면 APK 사이즈의 증감을 한눈에 알아 볼 수 있습니다.

단순한 문자 뿐만 아니라 html 태그도 적용 가능한데 이 부분은 추가로 포스팅 하도록 하겠습니다.

반응형
Comments