본문으로 건너뛰기

첫 배포, Amplify에서 Elastic Beanstalk까지

· 약 2분
Seung hyo, Lee
Front End Engineer @ Assistfit

어드민을 QA 환경에 처음 올렸다. 배포는 해본 적이 거의 없어서 이틀 동안 커밋이 70개 가까이 쌓였다. 대부분 "fix: amplify", "fix: next export" 같은 한 줄짜리다.

Amplify와 next export​

처음에는 AWS Amplify로 올리려고 했다. amplify.yml을 만들고 빌드 결과 폴더(baseDirectory) 경로를 몇 번씩 바꿔가며 돌렸다. 정적 파일로 내보내야 하나 싶어서 next export와 output: 'export'를 넣었다가 뺐다가 했다. 그러다 "remove: next export"를 되돌리는 커밋을 다시 되돌리는 커밋이 네 겹까지 쌓였다.

어드민은 동적 라우트와 rewrites를 쓰고 있어서 정적 export와 계속 부딪혔다. Amplify 설정을 전부 지우고 Node 서버로 띄우는 쪽으로 방향을 틀었다.

Elastic Beanstalk와 GitHub Actions​

Elastic Beanstalk에서는 next start로 서버를 띄운다. 여기서도 포트 때문에 한참 헤맸다. 8080, $PORT, 3000을 차례로 넣어보고 engines에 Node 18을 명시했다. .ebextensions로 서버에서 Yarn을 설치하고 빌드하는 방법도 해봤는데, 결국 빌드는 GitHub Actions에서 하고 결과물만 올리기로 했다.

on:
push:
branches:
- 'release/**'
# ...
- name: Build QA
run: yarn build
- name: Generate deployment package
run: zip ./deploy.zip -r * .[^.]*

release/ 브랜치에 push하면 빌드해서 zip으로 묶고 beanstalk-deploy 액션으로 올린다. AWS 키 같은 값은 전부 저장소 secrets에 넣었다. 그렇게 0.0.1 버전이 QA 서버에 올라갔다.

커밋 기록이 지저분해진 건 아쉽다. 배포 설정은 로컬에서 확인할 방법이 없어서 push하고 기다리는 것밖에 할 수 없었다. 다음에는 별도 브랜치에서 실험하고 정리해서 합쳐야겠다.