감자튀김 공장🍟

GitHub Action으로 CI/CD 하기 본문

Study/AWS

GitHub Action으로 CI/CD 하기

Potato potage 2023. 11. 10. 22:38
반응형

📌 설정 방법은 설명하지 않습니다! 진행하면서 참고한 자료, 문제들을 정리합니다.


🦦 사용

Github Action, AWS EC2, AWS S3, AWS CodeDeploy, Spring Boot


🦦 참고 자료

1. 로컬에서 EC2 SSH 접속 (Window OS)

https://wookim789.tistory.com/34

 

윈도우 터미널을 이용해 EC2 접속하기 (5)

자 지난 글에서 EC2 인스턴스를 띄워 보았다. 이제 내 로컬환경(내 pc)에서 aws의 ec2에 접속해보겠다. 방법은 여러가지이다. 이전에 설명한 SSH 방식으로 접근할 것인데, mac이라면 터미널에서 ssh 명

wookim789.tistory.com

 

2. Github Action CI 설정

https://be-developer.tistory.com/51

 

[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD)

[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD) 빗썸테크아카데미의 강의가 끝나고 팀프로젝트가 시작되었는데, 개발에 앞서 우선 aws에 배포해서 Hello world를 먼저 찍어보고 개발을 하

be-developer.tistory.com

 

3. 그 외 참고 (S3, EC2, IAM, CodeDeploy, AppSpec 등 작성)

https://bcp0109.tistory.com/363

 

Github Actions CD: AWS EC2 에 Spring Boot 배포하기

Overview 애플리케이션을 개발하면 외부에서도 접근 가능하도록 클라우드 환경에 배포합니다. 이전에 포스팅 했던 AWS 1편에서는 마지막에 scp 명령어로 로컬에 존재하는 빌드 파일을 EC2 인스턴스

bcp0109.tistory.com


 

🦦 문제점

1. Docker 사용?

Window에서 Docker 설치 후 실행했더니 제대로 실행되지 않았다

 

  • docker desktop wsl kernel version too low
  • docker desktop windows containers not supported
  • docker failed to initialize
  • Docker Desktop 무한 로딩
 
대략 이정도의 오류들을 만났고 PowerShell로 wsl, linux 설치, docker desktop 실행 후 container 변경, AppData에서 폴더 삭제 등등을 했음에도 문제가 제대로 해결되지 않았다. 하나 해결하면 다른 문제들이 번갈아가면서 나타났다. Window OS version을 확인 해봤음에도 문제가 생기는 버전은 아니었다. 
그래서 Docker를 사용하는 방법은 포기했다. stackoverflow까지 다 찾아봤음에도 해결되는게 하나도 없었기 때문이다. 심지어 삭제했다 다시 깔아도 똑같았다.
 

2. EC2에서 git clone 한 Spring boot의 application.yml 오류

CI/CD 하기 전에 EC2로 프로젝트 실행을 해보고 싶어서 git clone 해봤는데 build 중에 application.yml에서 오류가 떴다.
제대로 해결하고 넘어간 것은 아니지만 아마 EC2에서 S3에 접근하는 IAM을 설정하지 않아서 나는 오류인 것 같았다.
 
처음엔 IAM 문제인지 모르고 ./bashrc와 echo를 용하여 KEY={VALUE} 값을 설정해주는 방법을 찾아서 실행했다. (S3 Service URL을 인식하지는 못했다. IAM문제인것 같다고 추정 중)
 

 

3. Github Action 실행을 위한 .yml 위치에 따른 오류

main.yml을 작성하는데 계속 chmod +x ./gradlew 에서 오류가 났다.

폴더 루트에 yml파일이 있지만 gradle이 같은 위치에 존재하지 않아 뜨는 오류인 것 같았다.

당시 폴더 루트는 아래와 같았다.

main.yml
└ front 폴더
└ back 폴더
  └ .gradle

 

 

git에 back 폴더를 올리고 폴더 루트를 아래와 같이 변경한 후 Github Action에 성공 했다.

main.yml
.gradle

 


4. AWS CodeDeploy에서 배포 실패

(사진은 없다... 오류 해결하느라 바빴다.)

EC2 생성 및 연결, S3 생성 및 CI 성공한 .zip 파일 업로드 완료 후 CodeDeploy에서 배포가 계속 실패됐었다.

Applictaion Start 단계에서 Scripts does not exist at specified location 오류가 계속 떴다.

 

구글링해서 나온 방법들(deploy.sh 위치 확인, main.yml에서 Deploy 부분)을 다 확인 해봤지만 문제가 도저히 해결되지 않았었다. IAM을 재설정하고 CodeDeploy를 재생성하면서 같이 수정한 부분들이 꽤 있어서 정확한 문제점은 파악하지 못했지만, deploy.sh로만 적어놓은 것을 start.sh와 stop.sh로 나눠 적은 것도 문제 해결에 도움이 된건가 싶다.

일단 수정한 부분은 아래와 같다.

 

1. IAM 재생성

2. CodeDeploy 재생성

3. EC2 태그 생성

4. deploy.sh 대신 stop.sh와 start.sh 생성

5. main.yml 수정

 

이 문제로 3일 넘게 머리를 부여잡고 있었는데 결국 해결해서 기쁘다. 아마 .sh에서 문제가 생긴거였던 것 같다. 해결책이 다양하지 않아서 stackoverflow를 꽤 뒤져봤던 것 같다. 이번에 제일 많이 찾아본 곳이 stackoverflow였던 듯

 

그래도 CI/CD를 진행해보면서 신기하고 재밌었던 경험을 할 수 있었다.

반응형
Comments