배포자동화 오작동 문제 해결 1 (간단하게 해결)
- 에러 : 배포자동화가 겉보기엔 성공이라 뜨는데 실제론 동작하지 않음
- 원인
- 배포되는 이미지가 잘못되어 있었다. docker-compose.yml에서 사용할 이미지 이름이
beachcombine_spring으로 되어 있는데, 배포자동화 결과로 만들어지는 이미지 이름이beach_combine이어서 docker-compose가 제대로 동작하지 않고 있었다. - 해결
- .github / workflows / deploy.yml의 deploy script 수정
- 원래
- 수정
- 후기
- 사실 정말 간단한 건데, 발견 못했었단 게 웃기다,,, 수정 사항 생기면 직접 배포해주면 되기에 프로젝트 자체에 크리티컬한 문제를 주진 않았지만, 배포자동화가 제대로 동작 안 하는 게 답답했는데 찾아서 기쁘다! 일단, 이걸로 새로운 이미지로 docker 컨테이너가 띄어지는 건 확인했다. 그전까진 계속 이 과정이 안됐었다.

배포자동화 오작동 문제 해결 2 → 배포 서버 실행 에러 해결 (힘겹게 성공,,,,,! 기쁘다!)
- 에러) 끝이 아니었다 ^^ ㅋㅋ 이번에 배포를 새로 해준 건 됐는데, 포스트맨에서 테스트 시 모든 api가
Error: connect ECONNREFUSED 35.216.84.77:8080이라는 에러가 뜬다. - 원인) 보아 하니 이 녀석은 굉장히 다양한 원인으로 발생한다. 우린 그 중 서버가 가동되지 않아 발생한 것 같다. 포스트맨 자체엔 문제가 없는 걸 확인했기 때문이다.
- 실행이 제대로 안된다. 이미지 자체에 문제가 있는 것 같다. 이번에도 기나긴 로그 뜯기 시작,,,,,,,, → 찾앗다@@@!!!!!
class path resource [beach-combine-3770712535c0.json] cannot be opened because it does not exist이다. gitignore한 파일인데 내용 자체는 배포 서버에선 쓸 일 없지만, 해당 이름이 없어서 코드 단에서 에러가 난 거 같다. 빈 파일로 넣어주자. - 해결) 아래 코드 추가
- 에러) 후.. 또 끝이 아니었다. 아직 같은 에러가 뜬다. 로그를 다시 띄어보자.
- 로그 핵심
- 해결)
touch ./beach-combine-3770712535c0.json에 오타가 있었따. 바로,,touch ./beach-combine-3770712535c0.json.properties라고 써버린 것,,,(복붙하다 실수한 거 같다,,,) 끝에 properties를 지워져서 해결했다!
기나긴 로그 (토글 속)
로그 → 결국 같은 말이다.
- 에러) 또 다시 끝이 아니었다,,,,
- 원인
- 휴,,, 이 문제로 하루 종일 생각을 하다 3월 17일 드디어 이유를 발견했다!!!!!!!!!!!!!!! 바로!! github actions secret에 json이 제대로 들어가지 않고 있었단 점!
- 진짜 로컬에서 만든 이미지는 잘 동작하고, github action으로 만든 이미지는 잘 동작하지 않기에 도대체 이유가 뭘지 한참 고민했다,,,,
- 심지어 github action 동작은 초록불이 떴기에 어디가 에러인지 힌트도 받을 수 없었다.
- github action에서 받은 이미지를 직접 실행해봤을 때 위에 에러 로그가 떠서 google cloud stoarge와 관련한 문제라는 점을 떠올렸고, 로컬에서 만든 이미지와 github action으로 만든 이미지의 차이는 환경변수들뿐이기에 google cloud storage와 관련한 환경변수를 살펴봤다.
- 전부 제대로 들어가고 있었기에 문제가 뭘지 한참 더 고민하다 관점을 바꿔 떠오른 것이 바로 json 파일이라 그런가…? 라는 의문이엇고
- 바로
github actions secret json이란 키워드로 구글링을 하여 다른 사람도 이런 문제를 겪었단 걸 알게 되었다. - ChatGPT는 여기에 대해 계속 두루뭉술한 답만 줬어서 결국 사람이 직접 생각을 통해 찾아야 하는 에러도 많단걸 뼈저리게 느꼈다,,,
- 결론은 github actiosn secret에 json 파일 내용을 넣으면 json 파일의 큰따옴표가 다 사라지게 된다 한다. 그래서, gcp에서 json파일 내용을 필요로 하는데, 제대로 읽어지지 않았던 것이다…
- 사실 원칙적으론 github actions에는 json을 secret에 저장하지 말라고한다.
- 하지만, 라이브러리 (https://github.com/marketplace/actions/create-json) 이용해서 해결해줄 수 있기에 해결해주었다.
- 참고한 코드
- 내 코드
- 다만, 하지 말라는 걸 꾸역꾸역 해서 json 파일 만드는 게 맞나 싶긴 했다.
- 다음에 시간이 날 때, gcp에서 key로 json파일 말고 다른 방식으로 받는 법을 찾아봐야겠다.
에러 로그
- 추가 : 키 만료
- 해결) 키 생성하는 법은 이전에 내가 써둔 포스팅을 참고했다! 포스팅으로 정리해둔 과거의 나 칭찬해,,
원인) 이걸로 인해 딱히 문제가 발생하진 않는데, gcp를 쭉 둘러보다 키가 만료된 걸 발견했다.


![[Github Actions] secret에 json 넣고 싶을 때](https://www.notion.so/image/https%3A%2F%2Fimages.velog.io%2Fvelog.png?table=block&id=4fd9aa90-3e9f-4de7-94d3-2f7dcaf0927c&cache=v2)