From 6bb2cc24dfa1a9c5ddfbf649a26f038c14668ae0 Mon Sep 17 00:00:00 2001 From: rbgksqkr Date: Wed, 10 Apr 2024 14:08:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20github=20actions=20=EC=97=B0=EA=B2=B0?= =?UTF-8?q?=20(#118)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/front-deploy.yml | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .github/workflows/front-deploy.yml diff --git a/.github/workflows/front-deploy.yml b/.github/workflows/front-deploy.yml new file mode 100644 index 00000000..4ec8defb --- /dev/null +++ b/.github/workflows/front-deploy.yml @@ -0,0 +1,65 @@ +name: front-deploy + +on: + push: + branches: + - refactor/#118 + +jobs: + build: + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: refactor/#118 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + + # 리액트 빌드 + - name: build react + run: npm run build + + # aws user 연결 + - 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_ID }} + aws-region: ap-northeast-2 + + # 환경 변수 파일을 생성. + - name: Generate Environment Variables File for Production + run: | + echo "VITE_DEV_SERVER_URL=$VITE_DEV_SERVER_URL" >> .env + echo "VITE_PROD_SERVER_URL=$VITE_PROD_SERVER_URL" >> .env + env: + VITE_DEV_SERVER_URL: ${{ secrets.VITE_DEV_SERVER_URL }} + VITE_PROD_SERVER_URL: ${{ secrets.VITE_PROD_SERVER_URL }} + + # react 빌드한 /build를 s3로 업로드 + - name: Upload /dist to S3 + env: + BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME}} + run: | + aws s3 sync \ + ./dist s3://$BUCKET_NAME + + # 업로드한 s3 파일을 각 CDN 캐시 무효화하여 리프레시 하기 + - name: CloudFront Invalidation + env: + CLOUD_FRONT_ID: ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID}} + run: | + aws cloudfront create-invalidation \ + --distribution-id $CLOUD_FRONT_ID --paths "/*" + + - name: deploy + run: | + npm run deploy:prod