favicon Jay Lee DevLog

📚 목차

이제 svn commit을 확인까지 해봤고,

어떤 내용이 변경되었는지 확인하는 로직을 추가해보려 한다.

 


1. Commit 내용 확인

먼저 job 클릭 후 Configuration -> Triggers -> Build Steps -> Add build step -> Execute shell 클릭

 

본인이 스크립트 짤 줄 아시는 분이면 알아서 하시면 되고,

아니면 아래 처럼 입력

-> svn diff로 나온 결과를 파일로 빼고, 그 파일 값을 cat 하는 로직

#!/bin/bash

# 현재 작업 디렉토리 (빌드 시 자동으로 설정됨)
WORKSPACE=$(pwd)

# 현재 revision 가져오기
REV_CUR=$(svn info | grep '^Revision:' | awk '{print $2}') # 한글 버전이면 Revision을 리비전 으로 교체

# 이전 revision 가져오기 (이건 약식, 정확하게 하려면 저장해야 함)
REV_PREV=$(($REV_CUR - 1))

# 변경된 내용을 파일로 저장
svn diff -r $REV_PREV:$REV_CUR > $WORKSPACE/svn-changes.diff

# 콘솔 출력
echo "SVN 변경 내용 (리비전 $REV_PREV → $REV_CUR):"
cat $WORKSPACE/svn-changes.diff

 

이후 지금 빌드 클릭하여 테스트.

 

그리고 생성된 작업을 클릭하여 Console Output을 확인해보면,

추가한 내용이 나온다.

지금은 변경 내용이 없어서 이렇게 나오는 듯 하다.

 

2. Builds Name 변경

일단 Groovy Postbuild 플러그인을 설치.

 

 

작업 클릭 -> 구성 -> 빌드 후 조치 -> 빌드 후 조치 추가 -> Groovy Postbuild

 

아래의 내용 입력 및 저장

def log = manager.build.getChangeSet().getItems()
if (log.length > 0) {
    def commitMsg = log[0].getMsg().take(50)  // 커밋 메시지 앞 50자
    manager.build.displayName = "#${manager.build.number} - ${commitMsg}"
}

 

이후 빌드를 다시 해보면

이런 에러가 발생한다.

Groovy Sandbox에 대한 보안 정책때문에 발생하는 에러다.

 

해결방법은 아래와 같다.

Jenkins 관리에서 In-process Script Approval에 1 표시가 들어온 모습을 볼 수 있다.

클릭해서 들어가면 'getBuild' 라는 메소드에 대한 허용 여부를 선택할 수 있다.

여기서 Approve 눌러주면 된다.

하다보면 몇개 더 추가해야 될 수도 있다.

 

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.