Skip to content

Merge pull request #104 from SWYP-InNOut/dev #61

Merge pull request #104 from SWYP-InNOut/dev

Merge pull request #104 from SWYP-InNOut/dev #61

Workflow file for this run

on:
# trigger가 되길 바라는 action (push / pull request가 있다)
push:
branches:
# push가 되면 actions를 실행시킬 브랜치
- main
jobs:
build:
name: react build & deploy
# runner가 실행될 환경지정
runs-on: ubuntu-latest
# name은 단계별로 실행되는 액션들의 설명을 담은 것으로, 나중에 github action에서 workflow에 표시됨
# uses 키워드로 Action을 불러옴
# 레포지토리에 접근하여 CI서버로 코드를 내려받는 과정
steps:
- name: checkout Github Action
uses: actions/checkout@v3
- name: .env setting
run: |
echo "VITE_REACT_APP_HTTP_URL=${{ secrets.VITE_REACT_APP_HTTP_URL }}" >> .env
echo "VITE_REACT_APP_KAKAO_REST_API=${{ secrets.VITE_REACT_APP_KAKAO_REST_API }}" >> .env
echo "VITE_REACT_APP_KAKAO_REDIRECT_URI=${{ secrets.VITE_REACT_APP_KAKAO_REDIRECT_URI }}" >> .env
echo "VITE_REACT_APP_GOOGLE_REDIRECT_URI=${{ secrets.VITE_REACT_APP_GOOGLE_REDIRECT_URI }}" >> .env
- name: Get npm cache directory
id: npm-cache-dir
run: |
echo "::set-output name=dir::$(npm config get cache)"
- uses: actions/cache@v3
id: npm-cache
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-node-
- name: install yarn dependencies
run: yarn install
- name: react build
run: yarn 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_BUCKET_NAME }}
run: |
aws s3 cp --recursive --region ap-northeast-2 dist 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 "/*"