일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- OS
- memory
- 일상
- error
- 분할메모리할당
- web
- react-redux
- 자료구조
- 프로그래머스
- C++
- 알고리즘
- Operating System
- 협업
- 파이썬
- 정렬
- 리덕스장바구니
- Redux
- 기초100제
- Java
- js to ts
- 타입스크립트
- 토이프로젝트
- 공부
- CPU 스케줄링
- 코드업
- codeup
- react
- 스프링
- Spring
- 백준
- Today
- Total
감자튀김 공장🍟
GitHub Action으로 CI/CD 하기 본문
📌 설정 방법은 설명하지 않습니다! 진행하면서 참고한 자료, 문제들을 정리합니다.
🦦 사용
Github Action, AWS EC2, AWS S3, AWS CodeDeploy, Spring Boot
🦦 참고 자료
1. 로컬에서 EC2 SSH 접속 (Window OS)
https://wookim789.tistory.com/34
2. Github Action CI 설정
https://be-developer.tistory.com/51
3. 그 외 참고 (S3, EC2, IAM, CodeDeploy, AppSpec 등 작성)
https://bcp0109.tistory.com/363
🦦 문제점
1. Docker 사용?
Window에서 Docker 설치 후 실행했더니 제대로 실행되지 않았다
- docker desktop wsl kernel version too low
- docker desktop windows containers not supported
- docker failed to initialize
- Docker Desktop 무한 로딩
2. EC2에서 git clone 한 Spring boot의 application.yml 오류
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를 진행해보면서 신기하고 재밌었던 경험을 할 수 있었다.