지난 시간에 Thymeleaf layout 을 활용하여 계획하였던 메인페이지를 제작하였고, 각 버튼을 눌렀을 경우 각 페이지로 이동하는 매핑까지 완료하였습니다. 따라서 1차 테스트 배포를 하기로 하였고, CI / CD 까지 구축하기로 하였습니다. Jenkins 를 다루기 위해서는 CI / CD 에 관해서 알아야 이해하기 쉽기 떄문에 잠깐 다뤄보도록 하겠습니다.
CI / CD ?
CI / CD (Continuous Intergration and Continuous Delivery) 는 소프트웨어 개발 프로세스의 자동화와 최적화를 위한 개념입니다.
Continuous Intergration 는 지속적 통합 으로써, 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는것을 의미합니다.
Continuous Delivery or Continuous Deployment 는 지속적 서비스 제공 혹은 지속적 배포 로써 공유 레포지토리를 자동으로 Release 하는 것, Production 레벨까지 자동으로 deploy 한느 것을 의미합니다. 쉽게 정리하자면 CI 가 새로운 소스코드의 빌드, 테스트, 병합까지 의미하였는데 CD는 개발자의 변경 사항이 레포지토리를 넘어 프로덕션 환경까지 릴리즈 되는 것을 의미합니다.
이는 서비스의 개발팀과 비즈니스팀 간의 커뮤니케이션 부족 문제를 해결해 줌으로써 최근에는 DevOps 라고 불리는 직군이 생겨났습니다.
Jenkins ?
아마 배포를 한번이라도 경험해봤거나, 개발자라면 한번쯤 본 아저씨 일 것입니다. Jenkins 는 소프트웨어 빌드, 테스트, 제공 또는 배포와 관련된 모든 종류의 작업을 자동화하는 데 사용할 수 있는 독립형 오픈 소스 자동화 서버입니다. 워낙 어려운 내용이기 때문에 Jenkins 에 대해서는 공부하여 따로 정리를 해야할 것 같습니다. 어쨋든간, 수업시간에 NCP 를 활용하여 Jenkins 를 이미 구축하였습니다.
배포 과정
이번 프로젝트는 Spring Boot 3.X , Maven 으로 구성하였고 WAR 로 배포하기로 하였습니다. 테스트 배포와 실제 릴리즈 될 배포까지 해서 총 2개를 구성하였습니다.
Jenkins 에서 Github 주소를 연결해주었고 빌드까지 성공한것을 확인하였습니다.
이후에 배포된 주소로 이동하여 보니 모든 CSS 와 레이아웃이 적용되지 않은 채 출력 되었습니다 !!
오류 잡기
1. Build 하였을 때 target 에 static 이 존재하지 않을 수 있다. 따라서 상대경로 말고 절대경로를 사용해봐라.
target -> static 에 css , fonts 등 설정해준 정적 파일들이 모두 잘 빌드되어 있는것을 확인하였습니다.
2. <lin th:href> 태그에서 slash / 가 적용 되어있는지 확인하라 !
th 태그 내에 slash / 가 적용되어 있는것을 확인하였습니다.
이 외에도 각종 여러가지 방법을 시도하였으나 해결되지 않아 혹시 빌드 파일이 잘못되지 않았다면 톰켓의 문제일 수 있지 않을까 라는 조언을 듣고 Jenkins 에서 빌드된 war 파일을 가지고 와서 내장 톰켓에 강제로 실행시켜보았더니 layout 이 깨지지 않고 정상 작동하는 것을 확인할 수 있었습니다.
따라서 빌드된 파일의 문제는 없다는게 증명되었고, Jenkins 내의 외장 톰켓에서 빌드된 war 의 static 을 정상적으로 실행할 수 없는 것이 명확해젔기 때문에 Jenkins 에서 ssh 를 통해 내부 톰켓에서 실행하여 배포하는 방식으로 변경하여 배포를 시도해보았더니 !
아주 정상적으로 출력 되는 것을 확인하였습니다.
'Project > DevCampUs' 카테고리의 다른 글
[Semi-Project]JWT 요청 인가 테스트 실패(7) (0) | 2024.07.21 |
---|---|
[Semi-Project]Spring Security & JWT & OAuth2(6) (0) | 2024.06.23 |
[Semi-Project]thymeleaf & layout (4) (0) | 2024.06.21 |
[Semi-Project] API 명세서 작성 및 ERD 수정 (3) (0) | 2024.06.13 |
[Semi-Project] Git전략 & WBS 수정(2) (0) | 2024.06.12 |