Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

사적인 블로그

[ISSUE] CI/CD war 파일크기 불일치 이슈(Jenkins) 본문

Troble Shooting

[ISSUE] CI/CD war 파일크기 불일치 이슈(Jenkins)

DevYeri 2024. 12. 11. 20:01

이슈

: 서버 배포시 n개의 서버에 같은 파일이 (당연히) 배포되어야하는데, 일부 서버에서 파일 누락이 지속적으로 발생함. 로드 밸런싱을 걸어놨기때문에 틀린 코드 또는 맞는 코드로 지속적으로 보이는게 아니라 틀렸다 맞았다 해서 더 문제

 

원인

: 우선 현상을 발견한건 Jenkins에서 빌드된 war파일의 크기가 다르다는 점. 빌드시 문제점으로 보고있음

 

해결방법

: new 배포를 위한 빌드 시 기존에 Jenkins에서 배포된 war파일을 지우고, 배포작업을 진행하는 것으로 코드 수정

cd /var/lib/jenkins/workspace/HAPPYCODE_BUILD_ALL_SEND_WARFILE/

// 추가
find /var/lib/jenkins/workspace/HAPPYCODE_BUILD_ALL_SEND_WARFILE/target -name "ROOT.war" -delete

wait // 앞서 실행된 명령이 완료될 때까지 대기

dos2unix /var/lib/jenkins/workspace/HAPPYCODE_BUILD_ALL_SEND_WARFILE/grailsw
// grailsw 파일의 줄바꿈 형식을 DOS 형식(CRLF)에서 Unix 형식(LF)으로 변환
// Windows 생성 스크립트 -> Unix/Linux 환경 실행 시 호환성 문제 해결

wait

iconv -f ISO-8859-1 -t UTF-8 /var/lib/jenkins/workspace/HAPPYCODE_BUILD_ALL_SEND_WARFILE/grailsw -o /var/lib/jenkins/workspace/HAPPYCODE_BUILD_ALL_SEND_WARFILE/grailsw
// grailsw 파일 문자 인코딩 변환 (ISO-8859-1 to UTF-8)

wait

chmod +x /var/lib/jenkins/workspace/HAPPYCODE_BUILD_ALL_SEND_WARFILE/grailsw
// grailsw 파일에 실행 권한 부여
// Linux/Unix는 파일 권한 설정해야 스크립트를 실행 가능

wait

/var/lib/jenkins/workspace/My_Project_Build/grailsw \ // Grails Wrapper를 실행
  -Dgrails.work.dir=/var/lib/jenkins/workspace/My_Project_Build/target \ // Grails 작업 디렉토리 지정(target). 빌드 중 생성된 모든 임시 파일 및 결과물이 이 경로에 저장
  -Dserver.port=80 \ // 애플리케이션이 실행될 기본 포트
  -Dgrails.env=live \ // Grails 실행 환경 설정
  war --non-interactive --plain-output --stacktrace && exit $? // 사용자입력요구x, 간결로그출력, 에러스택트레이스 옵션 설정하여 war 파일 생성
							// 명령어 성공시 종료코드 0 반환

 

 

추가지식

 

  • grailsw : Grails Wrapper의 실행 파일
    • 프로젝트 디렉토리에서 Grails를 실행할 수 있게 함
    • 특정 버전의 Grails가 설치되어 있지 않더라도 실행 가능.
    • 일반적으로 grailsw는 Gradle의 gradlew처럼 동작하며, 빌드 및 테스트 작업을 수행하는 데 사용됨
  • Jenkins 구조 분석
    • /var/lib/jenkins/workspace/ : Jenkins에서 워크스페이스 디렉토리의 기본 경로
    • Jenkins에서 WAR 파일이 생성되는 경로는 보통 해당 경로 하위( 모든 Job의 작업 결과물이 여기에 저장)

출처 : gpt