더보기
https://everyday-spring.com/628
https://everyday-spring.com/629
https://everyday-spring.com/630
https://everyday-spring.com/631
https://everyday-spring.com/632
https://everyday-spring.com/633
지난 글에서는 윈도우, ubuntu 환경에서 Jenkins CI/CD 튜토리얼을 작성해봤다
이번 글에서는 3일간 환경을 구성하며 겪었던 다양한.. 문제들과... 해결방법을 작성해보겠다
젠킨스 미친 거 또 안되네
로컬 환경에 Jenkins 설치
이것은.. 개인 PC를 서버로 사용할 수 없기 때문에
EC2에 설치했다 큰 트러블은 아니었음
Jenkins Spring Boot build 무한로딩
젠킨스에서 빌드를 하게되면 중간에 로딩이 길어지면서 서버자체가 먹통되는 문제가 발생했다
Console Output을 살펴보면 GitHub에서 대상 branch를 clone해오는 것 까지는 작동 했으나
application을 build해서 jar 파일을 만들때 무한로딩에 걸리는 현상
로딩에 걸려버리면 Jenkins 페이지도 접속이 안되고
터미널로 서버에 연결조차 되지 않았다
30분이상 기다려도 무한 로딩상태여서 결국 EC2 Instance 자체를 중지하고 재시작 해야했다
계속해서 시도를 해봤지만 build 과정에서 계속 먹통이 됐고
Instance를 중지하는 것도 길게는 10분정도 시간이 걸렸다
로컬에서 환경구성을 해봤기 때문에 검색을 잘안해보고 설치했던게 패착..
문제는 리소스 부족으로 인한 빌드실패
기본 프리티어 설정인 t2.micro의 스펙은 1v CPU, 1 GiB Memory 인데
찾아보니 최소 2v CPU, 2~4 GiB Memory가 필요하다고 한다...
될리가 있나...
결국 Instance를 t3.small로 새로 만들었다
Spring Boot Spotless Plugin build resource
EC2 사양을 올렸는데도 build 과정에서 먹통이 되는 문제가 발생했다
build 과정에서 리소스를 많이 잡아먹는 Spotless 플러그인이 문제 원인
Spotless는 자동 정렬 플러그인으로
사용하지 않는 import 정리나 자동 정렬
파일 끝 개행등의 기능을 제공한다
하지만 컴파일 시마다 동작하면서 전체 파일을 점검하기 때문에
많은 리소스를 잡아먹을 수밖에 없다
팀원들과 협업을 하면서 어느정도 일관된 코드 스타일을 유지하기 위해 사용했는데
배포 branch에는 필요 없는 기능이어서
리소스를 많이 잡아먹는 Spotless Plugin을 삭제해 해결했다
Docker not found
Stage 'Build Docker' 단계에서
Docker 명령어를 찾지 못해 발생하는 문제
Docker위에 Jenkins가 설치된 구조이지만
Jenkins 컨테이너는 독립되어 있기 때문에
Docker in Docker 구조로 Jenkins 내에 Docker를 또 설치해줘야한다
추가적으로 Jenkins 컨테이너를 실행할 때
소켓 옵션을 줘서 정상 동작할 수 있었다
자세한 방법은 아래 글 참조
https://everyday-spring.com/632
그런데 또 무한로딩이 걸림 미쳐버리겠네
이때쯤 부터 그냥 영혼이 반 나가서
차라리 개발하고 싶어졌다
저 환경세팅 말고 코드 작성하고 싶어요...
무한로딩은 결국 리소스가 부족해서 발생함이 학습되어서
추가적으로 메모리 스왑을 해서 해결했다
자세한 방법은 아래 글 참조
https://everyday-spring.com/631
ERROR: Error fetching remote repo 'origin' hudson.plugins.git.GitException: Failed to fetch from
갑자기 되던것도 안됨 이슈 발생 ...
설정을 이것 저것 바꿔서 그런가
Git directory가 아니라면서 Jenkins가 나를 억까함...
챗지피티의 설명은
이 오류는 Jenkins가 GitHub 저장소에서 코드를 가져오지 못할 때 발생하는 오류입니다. 특히 git config remote.origin.url 명령이 "not in a git directory" 오류로 인해 실패했습니다.
그렇다고 합니다...
뭔가 파일이 꼬인 상황이라서
jenkis workspace의 파일을 삭제해서 해결했다
Jenkins CI/CD 환경변수
코드에는 보안을 위해 민감한 정보는 직접 적지 않고 모두 환경변수로 처리한다
배포 서버에서 Jar파일을 실행할 때도 이런 환경변수들이 필요하다
필요한 환경변수가 주입되지 않으면 application이 실행되지 않는다
docker 컨테이너를 실행할 때 옵션으로 환경변수를 입력해 해결했다
자세한 방법은 아래 글 참조
http://everyday-spring.com/633