사적인 블로그
[ISSUE] CI/CD war 파일크기 불일치 이슈(Jenkins) 본문
이슈
: 서버 배포시 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
'Troble Shooting' 카테고리의 다른 글
[Grails] respond vs redirect | 객체 자동 update 이슈 (1) | 2025.01.09 |
---|---|
[ISSUE] MySQL dump/load시 sql_mode 이슈 (0) | 2025.01.07 |
[ISSUE] Grails dbCreate 속성 - create, create-drop, update, validate, none (1) | 2024.12.31 |
[ISSUE] CSV 데이터 DB 임포트시 임의 숫자 변환(feat.Excel) (0) | 2024.12.10 |
[ISSUE] File upload (octet-stream) (1) | 2024.12.03 |