티스토리 뷰
[CI/CD]GitHub Actions + AWS S3 + AWS CodeDeploy를 활용하여 CI/CD 파이프라인을 구축할 때 오류가 난다면 확인해봐야할 것
김쓰로그 2023. 5. 14. 01:45https://github.com/jojoldu/freelec-springboot2-webservice/issues/806
위의 링크를 보며 CI/CD 파이프라인 구축을 해보았다. 간단한 구조지만 6시간의 사투끝에 성공했다...
이번 글에서는 GitHub Actions + AWS S3 + AWS CodeDeploy를 활용하여 CI/CD 파이프라인을 구축하면서 겪었던 오류 및 내가 미숙해서 생긴 여러 상황을 정리해보곘다.
1. GitHub Actions 스크립트의 위치
나는 처음에 아래 사진처럼 레포지토리 아래에 바로 코드관련 파일들이 있는 것이아닌 레포지토리 아래에 폴더를 하나 더 두는 식으로 레포지토리를 구성했었는데 이런 구성에서 GitHub Actions 스크립트를 작성하면 파일안에 .yml 파일이 폴더 밖에 생성되므로 제대로 동작하지 않는다.
따라서 폴더를 아래 사진과 같이 풀어해쳐놔야한다. 그러면 ./github/workflows 아래에 스크립트 파일이 생성되고 잘 동작할 것이다.
2. CodeDeploy 배포 실패시 로그 확인
GitHub Actions과 S3의 연동 성공으로 S3에는 압축파일이 잘 전달되었지만 이제 CodeDeploy에서 EC2로의 파일 전달이 잘 이뤄지지 않는 경우가 많았고 이에 따라 결과가 실패가 몇번 떴다. 이럴 경우 오류의 원인을 알 수 있는 몇가지 방법이 있는데 소개해 보겠다.
1) 배포ID를 클릭하면 오류내용을 볼 수 있다.
2) EC2에 직접 접속해서 오류 로그 확인하기
cd /opt/codedeploy-agent/deployment-root/4b322f48-36a7-4a16-9351-df01bad74727/{배포ID}/logs
위의 경로로 이동하면 scripts.log 파일이 하나 있는데 해당 파일을 분석하면 오류내용을 확인할 수 있다.
나 같은 경우 실패가 떴을 때의 원인 중 상당수가 CodeDeploy에서 EC2로 파일이 전달되었을 경우 배포 자동화 스크립트가 동작해야하는데 해당 스크립트의 위치를 제대로 입력해주지 않아서 오류가 많이 났다.
아래는 내가 겪었던 오류 중 하나이다.
{\"error_code\":5,\"script_name\":\"\",\"message\":\"Script does not exist at specified location:
/opt/codedeploy-agent/deployment-root/4b322f48-36a7-4a16-9351-df01bad74727/
d-ERY8M7GGN/deployment-archive/deploy.sh\",\"log\":\"\"}"}
여러 오류를 겪었지만 대부분의 오류는 GitHub Actions, 또는 appspec.yml(CodeDeploy를 위한 스크립트 .yml파일), deploy.sh(배포 자동화 파일) 등에 코드를 작성할 때 .jar 파일의 위치 문제, 또는 동작하고자 하는 스크립트 파일의 위치 오타 문제가 가장 많았다.
아래는 오류가 났을 경우 체크해봐야할 목록이다(부족할 수도 있습니다.ㅎㅎ)
- GitHub Actions 스크립트 파일을 작성할 때 branch 이름을 똑바로 적었는가
- S3 버킷의 이름 또는 CodeDeploy의 애플리케이션 이름과 배포 그룹이름을 똑바로 작성했는가
- .jar 또는 스크립트의 경로들을 제대로 작성했는가
- EC2에 IAM 역할 수정을 한 뒤 재부팅을 했는가
- EC2 인스턴스에서 CodeDeploy가 동작하고 있는가
'인프라' 카테고리의 다른 글
[AWS]EC2 내부 Redis vs ElastiCache 선택할 때 고민사항 (0) | 2023.07.31 |
---|---|
[CI/CD] 배포 전략 In-place, Rolling, Blue/Green, Immutable, Canary (0) | 2023.05.17 |
[CI/CD] CI/CD란? (0) | 2023.05.13 |
[AWS] 종료 스크립트, 배포 스크립트 작성하기 (0) | 2023.05.08 |
[AWS] git clone후 프로젝트를 배포해보기 (0) | 2023.05.07 |
- Total
- Today
- Yesterday
- 4673번
- 덧칠하기
- 프로그래머스
- MVC
- 자바
- 7568
- 1316번
- 백엔드#게시판
- 백준#잃어버린 괄호#1541
- java
- 사탕 게임#백준#3085
- 스프링
- arraylist
- HTTP#HTTP특징
- list
- 파이썬
- Spring
- 백준
- 11659
- 회고
- querydsl
- 백준#서강근육맨#20300
- 게시판#자바#JPA#Entity
- 오류
- springboot
- this()
- 서블릿#Servlet
- 1978
- controller
- 대충 만든 자판
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |