Feat/seo (#19) #20
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: s3-deploy | |
# trigger가 되길 바라는 action을 입력합니다. push / pull_request가 있습니다. | |
# 저는 develop 브랜치에 push가 되면 actions을 실행하도록 설정했습니다. | |
on: | |
push: | |
branches: | |
- main | |
# 위의 이벤트가 트리거되면 실행할 목록입니다. | |
jobs: | |
build: | |
name: React build & deploy | |
# runner가 실행될 환경을 지정합니다. | |
runs-on: ubuntu-latest | |
# name은 단계별로 실행되는 액션들의 설명을 담은 것으로, 나중에 github action에서 workflow에 표시됩니다. | |
# uses 키워드로 Action을 불러올 수 있습니다. | |
steps: | |
# 레포지토리에 접근하여 CI서버로 코드를 내려받는 과정입니다. | |
- name: checkout Github Action | |
uses: actions/checkout@v3 | |
- name: Install Dependencies | |
run: npm install | |
- name: Build | |
run: npm run build | |
# aws에 접근하기 위한 권한을 받아옵니다. | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ap-northeast-2 | |
# S3에 build 파일을 올립니다. | |
- name: Upload to S3 | |
env: | |
BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME }} | |
run: | | |
aws s3 sync \ | |
./public s3://$BUCKET_NAME | |
# cloudfront로 배포되는 파일은 기본설정 상 24시간동안 캐시가 유지됩니다. | |
# 배포 후 S3에는 최신 정적리소스가 올라가있지만 엣지로케이션엔 이전 파일이 올라가있는 상태라는 의미입니다. | |
# 바로 변화가 반영되길 바란다면 invalidation을 해주면 됩니다. | |
# 해당 부분은 과금될 수 있으니 확인 후 사용하세요! | |
- name: CloudFront Invalidation | |
env: | |
CLOUD_FRONT_ID: ${{ secrets.AWS_CLOUDFRONT_ID }} | |
run: | | |
aws cloudfront create-invalidation \ | |
--distribution-id $CLOUD_FRONT_ID --paths "/*" |