TIL

EC2 ubuntu Jenkins CI/CD 트러블슈팅 | 무한로딩, 먹통 | Docker not found | not in a git directory

everyday-spring 2024. 11. 4. 12:12

 

더보기

https://everyday-spring.com/628

 

Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전공했단 사실

시작에 앞서....Docker를... AWS EC2에 설치 했어야 하는데별 의심없이 개인 pc에 설치했다...잘못된 방향으로 핸들이 고장난 에잇톤트럭마냥 달려서 하루를 낭비했다이것은.. 그 기록....  Docker 설치h

everyday-spring.com

https://everyday-spring.com/629

 

Window PC에 Docker, jenkins 설치, GitHub 연동하기 (2) | 난 삽질로 유학까지 다녀왔단 사실

https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전공했단 사실시작에 앞서....Docker를... AWS EC2에 설치 했어야 하는데별 의심없이 개인 pc에 설치했다..

everyday-spring.com

https://everyday-spring.com/630

 

AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (1) | 최종_최최종_찐막_찐찐막

https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전공했단 사실시작에 앞서....Docker를... AWS EC2에 설치 했어야 하는데별 의심없이 개인 pc에 설치했다..

everyday-spring.com

https://everyday-spring.com/631

 

AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (2) | 윈도우 PuTTY EC2 연동하기 | EC2 메모리 스왑

https://everyday-spring.com/630 AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (1) | 최종_최최종_찐막_찐찐막https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전

everyday-spring.com

https://everyday-spring.com/632

 

AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (3) | Docker in Docker

https://everyday-spring.com/630 AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (1) | 최종_최최종_찐막_찐찐막https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전

everyday-spring.com

https://everyday-spring.com/633

 

AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (4) | CI/CD 최종 | Jenkins Pipeline Docker 배포까지 총정리

https://everyday-spring.com/630 AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (1) | 최종_최최종_찐막_찐찐막https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전

everyday-spring.com

 

지난 글에서는 윈도우, 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

 

AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (3) | Docker in Docker

https://everyday-spring.com/630 AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (1) | 최종_최최종_찐막_찐찐막https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전

everyday-spring.com

 

 

그런데 또 무한로딩이 걸림 미쳐버리겠네

이때쯤 부터 그냥 영혼이 반 나가서

차라리 개발하고 싶어졌다

저 환경세팅 말고 코드 작성하고 싶어요...

 

무한로딩은 결국 리소스가 부족해서 발생함이 학습되어서

추가적으로 메모리 스왑을 해서 해결했다

 

자세한 방법은 아래 글 참조

https://everyday-spring.com/631

 

AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (2) | 윈도우 PuTTY EC2 연동하기 | EC2 메모리 스왑

https://everyday-spring.com/630 AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (1) | 최종_최최종_찐막_찐찐막https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전

everyday-spring.com

 

 

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

 

AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (4) | CI/CD 최종 | Jenkins Pipeline Docker 배포까지 총정리

https://everyday-spring.com/630 AWS EC2에 Docker Jenkins 설치, Github Webhook 연동 (1) | 최종_최최종_찐막_찐찐막https://everyday-spring.com/628 Window PC에 Docker, jenkins 설치, GitHub 연동하기 (1) | 난 대학시절 삽질을 전

everyday-spring.com