Skip to content

Fix: Rename ecosystem.config.js to ecosystem.config.cjs #12

Fix: Rename ecosystem.config.js to ecosystem.config.cjs

Fix: Rename ecosystem.config.js to ecosystem.config.cjs #12

Workflow file for this run

name: CI/CD Deploy
on:
push:
branches:
- develop
jobs:
deploy:
runs-on: ubuntu-latest
env:
BACKEND_PORT: ${{ secrets.BACKEND_PORT }}
BACKEND_FRONTEND_URL: ${{ secrets.BACKEND_FRONTEND_URL }}
BACKEND_MONGO_URL: ${{ secrets.BACKEND_MONGO_URL }}
BACKEND_SESSION_SECRET: ${{ secrets.BACKEND_SESSION_SECRET }}
BACKEND_KAKAO_REST_API_KEY: ${{ secrets.BACKEND_KAKAO_REST_API_KEY }}
BACKEND_KAKAO_REDIRECT_URI: ${{ secrets.BACKEND_KAKAO_REDIRECT_URI }}
FRONTEND_API_BASE_URL: ${{ secrets.FRONTEND_API_BASE_URL }}
FRONTEND_PORT: ${{ secrets.FRONTEND_PORT }}
steps:
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Deploy to EC2
uses: appleboy/ssh-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_KEY }}
port: 22
script: |
APP_DIR="/home/ubuntu/app"
# SSH host key 자동 등록
mkdir -p ~/.ssh
ssh-keyscan github.com >> ~/.ssh/known_hosts
# 앱 디렉토리 초기화 후 SSH clone
if [ -d "$APP_DIR" ]; then
rm -rf "$APP_DIR"
fi
mkdir -p "$APP_DIR"
cd "$APP_DIR"
git clone git@github.com:Ewhaian-WebEngineering/padlet.git "$APP_DIR"
# 1️⃣ back/.env 생성 (echo 방식)
mkdir -p "$APP_DIR/back"
echo "PORT=${BACKEND_PORT}" > "$APP_DIR/back/.env"
echo "FRONTEND_URL=${BACKEND_FRONTEND_URL}" >> "$APP_DIR/back/.env"
echo "MONGO_URL=${BACKEND_MONGO_URL}" >> "$APP_DIR/back/.env"
echo "SESSION_SECRET=${BACKEND_SESSION_SECRET}" >> "$APP_DIR/back/.env"
echo "KAKAO_REST_API_KEY=${BACKEND_KAKAO_REST_API_KEY}" >> "$APP_DIR/back/.env"
echo "KAKAO_REDIRECT_URI=${BACKEND_KAKAO_REDIRECT_URI}" >> "$APP_DIR/back/.env"
# 2️⃣ back 설치 및 PM2 재시작
cd "$APP_DIR/back"
npm install
if [ -f ecosystem.config.cjs ]; then
pm2 startOrRestart ecosystem.config.cjs --env production
else
echo "ecosystem.config.cjs 파일이 없습니다. PM2 재시작 건너뜀."
fi
# 3️⃣ front/.env 생성 (echo 방식)
mkdir -p "$APP_DIR/front"
echo "VITE_API_BASE_URL=${FRONTEND_API_BASE_URL}" > "$APP_DIR/front/.env"
echo "VITE_PORT=${FRONTEND_PORT}" >> "$APP_DIR/front/.env"
# 4️⃣ front 설치 및 빌드
cd "$APP_DIR/front"
npm install
if [ -f "src/pages/loginPage/KakaoLogo.svg" ]; then
npm run build || echo "Front build 실패: 경로 문제 또는 파일 누락 확인 필요"
else
echo "Front build 실패: KakaoLogo.svg 파일 존재하지 않음"
fi
# 5️⃣ Nginx 배포
if [ -f "$APP_DIR/nginx.conf" ]; then
sudo cp "$APP_DIR/nginx.conf" /etc/nginx/sites-available/default
sudo systemctl restart nginx
else
echo "nginx.conf 파일이 존재하지 않습니다. 경로 확인 필요"
fi