fix: fix layout #35
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 "/*" |