Skip to content

design: fix price trend #56

design: fix price trend

design: fix price trend #56

Workflow file for this run

name: MAIN CI
on:
push:
branches: [main]
jobs:
Deploy:
runs-on: ubuntu-latest
# name은 단계별로 실행되는 액션들의 설명을 담은 것으로, 나중에 github action에서 workflow에 표시됩니다.
# uses 키워드로 Action을 불러올 수 있습니다.
steps:
# 1 - 소스코드 복사
- name: Checkout source code
uses: actions/checkout@v3
# 2 - node_modules 캐싱
# workflow가 실행될 때 필요한 파일 중에서 거의 바뀌지 않는 파일들을 GitHub의 캐시에 올려놓고 CI 서버로 내려받습니다.
# 프로젝트에서 자주 바뀌지 않는 수많은 패키지를 매번 다운받아 올리면 시간도 오래걸리고 네트워크 대역폭을 많이 사용하게됩니다.
- name: Cache node modules
# **uses** 키워드는 GitHub Actions 마켓플레이스에서 제공하는 액션을 사용하겠다는 것을 나타냅니다.
# 여기서는 **actions/cache@v3**라는 액션을 사용하며, 이는 파일이나 디렉토리를 캐싱하는 데 사용되고 있습니다.
uses: actions/cache@v3
# **with** 키워드는 사용할 액션에 전달할 **입력값**들을 지정합니다.
with:
# **path** 키워드는 캐싱할 파일 또는 디렉토리의 경로를 지정합니다.
path: ~/.npm
# **key**는 캐시의 고유 식별자를 설정합니다. 이 식별자는 캐시를 생성하고 검색하는 데 사용됩니다.
# **{{ runner.OS }}**는 실행 중인 러너의 운영 체제를 나타냅니다.
# **hashFiles('**/package-lock.json')**는 **package-lock.json** 파일의 해시값을 계산하여,
# 의존성이 변경될 때마다 새로운 캐시를 생성하도록 합니다.
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
# **restore-keys**는 캐시 키가 정확히 일치하지 않을 경우 사용할 대체 키를 제공합니다.
# 이는 가장 최근에 일치하는 캐시를 검색하는 데 사용됩니다.
# ** {{ runner.OS }}-node- **와 일치하는 최신 캐시를 찾는 데 사용되는 대체 키입니다.
restore-keys: |
${{ runner.os }}-node-
# 3 - 의존성 패키지 설치
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm install
# 4 - 빌드
- name: Build
run: npm run build
# 5 - AWS 인증
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY_ID }}
aws-region: ap-northeast-2
# 6 - AWS S3에 빌드 결과물 배포
## CRA로 생성한 React App은 build 폴더에 빌드 결과물이 들어있습니다. (dist 폴더가 아님!)
- name: Deploy to S3
run: aws s3 sync ./build s3://${{ secrets.AWS_S3_BUCKET_NAME }} --delete
# 7 - CloudFront 캐시 무효화
- name: Invalidate CloudFront Cache
run: aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_ID }} --paths "/*"