1) aws codePipieline에 등록한 branch에 pull request
2) branch에 변경된 소스코드 내용들이 codePipeline을 통해 출력 아티팩트로 지정된 AWS S3 bucket에 저장
(pipeline 생성 시, 출력 아티팩트를 기본값으로 저장해둔 경우, SourceArtifact라는 이름으로 s3 버킷 내 폴더 생성)
3) CodeDeploy에서 S3 Bucket의 소스코드를 AWS EC2로 배포
4) AWS EC2에서 배포받은 소스코드를 빌드(typescript -> javascript)
5) afterinstall hook을 통해 배포 환경에서 서버 자동 재실행
런타임 목적으로 사용하고 있는 EC2가 t3 micro로 좋은 성능이 아닌 것도 문제 원인이라 할 수 있지만, 애당초, 런타임 환경에서 런타임이 아니라 컴파일부터 하려고 한 것 자체가 원인이라고 판단했다. 요컨대, 런타임 환경에는 런타임에 필요한 요소들만 배포되어야 한다.
1) aws codePipieline에 등록한 branch에 pull request
2) branch에 변경된 소스코드 내용들이 codePipeline을 통해 출력 아티팩트로 지정된 AWS S3 bucket에 저장
(pipeline 생성 시, 출력 아티팩트를 기본값으로 저장해둔 경우, SourceArtifact라는 이름으로 s3 버킷 내 폴더 생성)
3) 소스코드를 빌드(typescript -> javascript)
4) 빌드한 소스코드를 AWS EC2에 배포
5) afterinstall hook을 통해 배포 환경에서 서버 자동 재실행
version: 버전 작성
아래는 빌드가 실행될 환경 및 명령어를 작성해준다.
phases:
install:
runtime-versions:
nodejs: 16
commands:
- npm install
pre_build: // 빌드 사전 명령어
commands:
- echo Nothing to do in the pre_build phase...
build: // 빌드 명령어
commands:
- echo Build started on `date`
- npm run build (pacakage.json에 이미 작성된 빌드에 대한 명령어이다.)
post_build: // 밀드 이름 명령어
commands:
- echo Build completed on `date`
아래는 빌드 출력물에 대한 설정이다.
artifacts:
files:
- '**/*'
name: build-$(date +%Y-%m-%d)
SourceArtifact
로 이름이 설정되어 있을 것이다.(파이프라인 생성 시 기본값으로 생성되는 아티팩트명이다)