[ALL] README 업데이트 #199
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: frontend deployment | |
on: | |
push: | |
branches: [main] | |
paths: ["frontend/**"] | |
defaults: | |
run: | |
working-directory: frontend | |
env: | |
S3_BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME_FRONTEND }} | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# 소스 코드의 string 을 깃허브 리포지토리 시크릿에 저장된 값으로 교체 | |
- name: Replace secrets | |
run: | | |
sed -i "s/BOOTME_ISSUER/${{ secrets.BOOTME_ISSUER }}/g" ./src/hooks/useSecret.tsx | |
sed -i "s/BOOTME_AUDIENCE/${{ secrets.BOOTME_AUDIENCE }}/g" ./src/hooks/useSecret.tsx | |
sed -i "s/BOOTME_SIGNING_KEY/${{ secrets.BOOTME_SIGNING_KEY }}/g" ./src/hooks/useSecret.tsx | |
- name: Install dependencies and Build | |
run: | | |
npm install | |
npm run build | |
- 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 | |
- name: Delete files from S3 root | |
run: | | |
aws s3 rm s3://${S3_BUCKET_NAME}/ --recursive --exclude="naver_logo.svg" --exclude="favicon.ico" --exclude="build/*" | |
# 기존 배포파일들을 보관하기 위해 S3 버킷 root 경로에 더해 ./build 폴더에도 빌드파일 저장 | |
- name: Create new folder in S3 and Upload build files to the folder | |
run: | | |
folder_name=$(TZ=Asia/Seoul date +"%Y%m%d_%H%M%S")_${GITHUB_SHA} | |
aws s3api put-object --bucket ${S3_BUCKET_NAME} --key build/${folder_name}/ | |
aws s3 cp dist/ s3://${S3_BUCKET_NAME}/build/${folder_name}/ --recursive | |
- name: Upload new build files to S3 bucket root | |
run: | | |
aws s3 cp dist/ s3://${S3_BUCKET_NAME}/ --recursive | |
sleep 10 | |
# 새로 업로드 된 index.html 파일을 호스팅 하도록 CloudFront 캐시 삭제 | |
- name: Invalidate CloudFront cache | |
run: | | |
aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} --paths '/*' |