Skip to content

Merge pull request #267 from VitaCheck/fix/alarm-notificaton-modal #199

Merge pull request #267 from VitaCheck/fix/alarm-notificaton-modal

Merge pull request #267 from VitaCheck/fix/alarm-notificaton-modal #199

Workflow file for this run

name: Deploy to S3 + CloudFront
on:
push:
branches: ["dev"]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: "deploy-dev"
cancel-in-progress: true
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
AWS_REGION: ${{ secrets.AWS_REGION }}
S3_BUCKET: ${{ secrets.S3_BUCKET }}
CLOUDFRONT_DISTRIBUTION_ID: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Enable pnpm via corepack
run: |
node -v
corepack enable
corepack prepare pnpm@9 --activate
which pnpm
pnpm -v
- name: Resolve pnpm store path
id: pnpm-cache
run: echo "STORE_PATH=$(pnpm store path | tr -d '\n')" >> $GITHUB_OUTPUT
- name: Cache pnpm store
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm run build
env:
VITE_SERVER_API_URL: ${{ secrets.VITE_SERVER_API_URL }}
VITE_CLOUDINARY_CLOUD_NAME: ${{ secrets.VITE_CLOUDINARY_CLOUD_NAME }}
VITE_CLOUDINARY_UPLOAD_PRESET: ${{ secrets.VITE_CLOUDINARY_UPLOAD_PRESET }}
VITE_FB_API_KEY: ${{ secrets.VITE_FB_API_KEY }}
VITE_FB_AUTH_DOMAIN: ${{ secrets.VITE_FB_AUTH_DOMAIN }}
VITE_FB_PROJECT_ID: ${{ secrets.VITE_FB_PROJECT_ID }}
VITE_FB_STORAGE_BUCKET: ${{ secrets.VITE_FB_STORAGE_BUCKET }}
VITE_FB_MESSAGING_SENDER_ID: ${{ secrets.VITE_FB_MESSAGING_SENDER_ID }}
VITE_FB_APP_ID: ${{ secrets.VITE_FB_APP_ID }}
VITE_FB_VAPID_KEY: ${{ secrets.VITE_FB_VAPID_KEY }}
VITE_CLOVA_OCR_URL: ${{ secrets.VITE_CLOVA_OCR_URL }}
VITE_CLOVA_OCR_SECRET: ${{ secrets.VITE_CLOVA_OCR_SECRET }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Upload assets (long cache)
run: |
aws s3 sync ./dist "s3://${S3_BUCKET}" \
--exclude "index.html" \
--cache-control "public,max-age=31536000,immutable" \
--delete
- name: Upload index.html (no-cache)
run: |
aws s3 cp ./dist/index.html "s3://${S3_BUCKET}/index.html" \
--cache-control "no-cache" \
--content-type "text/html; charset=utf-8"
- name: Create CloudFront invalidation
run: |
aws cloudfront create-invalidation \
--distribution-id "${CLOUDFRONT_DISTRIBUTION_ID}" \
--paths "/*"