Skip to content

hotfix: cicd .env 오류 해결 #80

hotfix: cicd .env 오류 해결

hotfix: cicd .env 오류 해결 #80

name: Build and Deploy to S3 + CloudFront
on:
push:
branches:
- main
- test
- dev
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Use Node.js 20 + pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Inject environment variables
run: |
echo "VITE_API_URL=${{ secrets.VITE_API_URL }}" >> .env
echo "VITE_KAKAO_JS_KEY=${{ secrets.VITE_KAKAO_JS_KEY }}" >> .env
echo "VITE_SIGNATURE_ENCRYPTION_KEY=${{ secrets.VITE_SIGNATURE_ENCRYPTION_KEY }}" >> .env
echo "VITE_FIREBASE_API_KEY=${{ secrets.VITE_FIREBASE_API_KEY }}" >> .env
echo "VITE_FIREBASE_AUTH_DOMAIN=${{ secrets.VITE_FIREBASE_AUTH_DOMAIN }}" >> .env
echo "VITE_FIREBASE_PROJECT_ID=${{ secrets.VITE_FIREBASE_PROJECT_ID }}" >> .env
echo "VITE_FIREBASE_STORAGE_BUCKET=${{ secrets.VITE_FIREBASE_STORAGE_BUCKET }}" >> .env
echo "VITE_FIREBASE_MESSAGING_SENDER_ID=${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }}" >> .env
echo "VITE_FIREBASE_APP_ID=${{ secrets.VITE_FIREBASE_APP_ID }}" >> .env
echo "VITE_FIREBASE_MEASUREMENT_ID=${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }}" >> .env
echo "VITE_FIREBASE_VAPID_KEY=${{ secrets.VITE_FIREBASE_VAPID_KEY }}" >> .env
echo "VITE_ADMIN_API_URL=${{ secrets.VITE_ADMIN_API_URL }}" >> .env
echo "VITE_TOSS_CLIENT_KEY=${{ secrets.VITE_TOSS_CLIENT_KEY }}" >> .env
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "VITE_KAKAO_REDIRECT_URI=${{ secrets.VITE_KAKAO_REDIRECT_URI_PROD }}" >> .env
elif [ "${{ github.ref }}" = "refs/heads/test" ]; then
echo "VITE_KAKAO_REDIRECT_URI=${{ secrets.VITE_KAKAO_REDIRECT_URI_TEST }}" >> .env
else
echo "VITE_KAKAO_REDIRECT_URI=${{ secrets.VITE_KAKAO_REDIRECT_URI_DEV }}" >> .env
fi
- name: Build React app
run: |
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
pnpm build:prod
elif [ "${{ github.ref }}" = "refs/heads/test" ]; then
pnpm build:test
else
pnpm build:dev
fi
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
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: Sync to S3
run: aws s3 sync dist/ s3://$S3_BUCKET --delete
env:
S3_BUCKET: ${{ github.ref == 'refs/heads/main' && secrets.AWS_S3_BUCKET
|| github.ref == 'refs/heads/test' && secrets.AWS_S3_BUCKET_TEST
|| secrets.AWS_S3_BUCKET_DEV }}
- name: Invalidate CloudFront cache
uses: chetan/invalidate-cloudfront-action@v2
env:
DISTRIBUTION: ${{ github.ref == 'refs/heads/main' && secrets.CLOUDFRONT_DISTRIBUTION_ID
|| github.ref == 'refs/heads/test' && secrets.CLOUDFRONT_DISTRIBUTION_ID_TEST
|| secrets.CLOUDFRONT_DISTRIBUTION_ID_DEV }}
PATHS: '/*'
AWS_REGION: ap-northeast-2
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}