[TIL] 23.03.27 GitActions CD 중 에러 해결과정

hyewon jeong·2023년 3월 27일
0

ci를 마친후 cd를 했지만 ㅠㅠㅎㅎㅎ에러가 줄줄이 소세지 처럼 나타나 에러를 해결 하기위해 ~ 시작 !

1-1 시도 3/24

시도 :
echo "${{ secrets.APPLICATION }}" | base64 --decode > ./src/main/resources/application.yml
에서 base64부분을 인식하지 못하는것 같아 아래처럼 변경 하였다.

echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.yml

1-2 시도 3/24

이번엔 application.yml 파일은 잘 만들어졌지만 aws s3 업로드시 문제가 발생했다.

시도 : yml을 인식 못하는 경우가 있다고 해서 yaml로 변경함
https://coding-nyan.tistory.com/62

1-3 시도 3/24

여전히 같은 에러 로 다시 yml로 변경했다.

1-4 시도 3/25

아무리 구글링해도 해결법을 알 수 없어 답답한 마음에 ,, 챗gpt에게 물었다 .. ㅋㅋㅋㅋ

appspec.yml인스턴스 및 서버에 소프트웨어 배포를 자동화하는 서비스인 AWS CodeDeploy에서 사용하는 파일입니다. 이 파일은 애플리케이션 파일의 위치, 스크립트 실행 순서 및 배포에 필요한 권한과 같은 배포 프로세스를 정의합니다.

찾을 수 없다는 오류 메시지가 표시되면 AWS CodeDeploy가 애플리케이션의 루트 디렉터리에서 파일을 appspec.yml찾을 수 없다는 의미입니다 . appspec.yml이는 다음 이유 중 하나 때문일 수 있습니다.

파일이 배포 패키지에 포함되지 않음: appspec.yml파일이 배포 패키지의 루트 디렉터리에 포함되어 있는지 확인하십시오.

파일 이름이 변경되었거나 이동됨: 파일 이름을 변경하거나 이동한 경우 appspec.yml배포 프로세스에서 해당 파일에 대한 모든 참조를 업데이트해야 합니다.

파일이 잘못된 위치에 있음: appspec.yml파일이 애플리케이션의 루트 디렉토리에 있는지 확인하십시오.

파일의 철자가 정확하지 않음: AWS CodeDeploy는 대소문자를 구분하므로 파일 이름의 철자가 올바른지 확인하십시오.

1-5 시도 3/26

다시 처음으로 돌아가 원인을 다시 생각했다. appspec.yml 파일위치도 정상이고, 문법도 정상이다. 근데 찾지를 못한다... 며칠간 블로깅 하던 중 스쳐지나갔던 블로깅 글 중 , 빌드한 파일에 appspec.yml이 포함되어 있지않아서 에러가 났고, appspec.yml 을 포함시키니 해결되었다는 ~~!!!!! 게 뇌리에 스쳤다..

원인 : gitignore에서 .yml해서.... appspec.yml이 빌드되지 못한것일 듯
해결법 : gitignore에서
.yml-> application.yml 로 특정 yml만 ignore하여 appspec.yml 포함하여 빌드 할 수 있도록 했다.


테스트용 develop에 merge 시켜봤다.
깃에서는 성공한거 같아 보였으나
codeDeploy 앱에서 확인 결과 실패였다. ㅠㅠ

아래와 같은 결과가 나왔다.

1-6 시도 3/27

  1. codedeploy설정과 관련된 에러라면 대부분 여기 빨간박스에 에러메세지가 뜬다.
  2. 만약에 codedeploy설정이 아닌, 배포스크립트를 수행하던 중 오류가 발생했다면,
    하단으로 스크롤하여 View events를 클릭하면, 더욱 자세한 오류메세지를 보여준다.

아래의 경우 주로 배포스크립트를 실행하던 중 문제가 생겼을 때 나오는 메세지이다.

The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems

하단으로 스크롤하여 View events를 클릭하면, 더욱 자세한 오류메세지를 보여준다.
실제로 EC2에서 배포스크립트를 실행하다가 생긴 에러를 그대로 보여준다.

Codedeploy는 appspec을 통해 hook을 걸 수 있고 이에 따라 Lifecycle을 이렇게 가지는데 AfterInstall에서 문제가 발생했다고 함

원인 :
else 주변 에러가 발생했다고 말하는 것같아 보니,,,, 왜 이제서야... 이상한걸 느낀걸까?
else 주변에 에러 발생과... 종료if..? 롸??? 종료 와 if 사이 엔터를 왜 치지 않았을까 ㅡ _ㅡ

해결법 :

# 프로세스가 켜져 있으면 종료
if [ -z $CURRENT_PID ]; then
  echo "$TIME_NOW > 현재 실행중인 애플리케이션이 없습니다" >> $DEPLOY_LOG
else
  echo "$TIME_NOW > 실행중인 $CURRENT_PID 애플리케이션 종료 " >> $DEPLOY_LOG
  kill -15 $CURRENT_PID
fi

ㅠㅠ 성공 ~~24일부터 시작한 에러와 이별한다 . 행복해라

profile
개발자꿈나무

0개의 댓글