1- name : Deploy Microservices (Artifact Mode)
1+ name : Deploy Microservices (Lean Artifact Mode)
22
33on :
44 push :
@@ -21,38 +21,55 @@ jobs:
2121 node-version : 20
2222 cache : " pnpm"
2323
24- # Install full workspace deps
2524 - name : Install dependencies
2625 run : pnpm install --frozen-lockfile
2726
28- # Build everything
2927 - name : Build workspace
3028 run : pnpm -r run build
3129
32- # SSH setup
3330 - name : Setup SSH
3431 run : |
3532 mkdir -p ~/.ssh
3633 echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/ec2.pem
3734 chmod 600 ~/.ssh/ec2.pem
3835 ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts
3936
40- # Deploy full production bundle
41- - name : Deploy to EC2
37+ # ---------------- BACKEND DEPLOY ----------------
38+ - name : Deploy Backend
4239 run : |
4340 rsync -avz --delete \
4441 -e "ssh -i ~/.ssh/ec2.pem" \
45- api-gateway \
46- services \
47- frontend/.next \
48- frontend/public \
49- package.json \
50- pnpm-lock.yaml \
51- pnpm-workspace.yaml \
42+ api-gateway/dist \
43+ services/patient-service/dist \
44+ services/staff-service/dist \
45+ api-gateway/package.json \
46+ services/patient-service/package.json \
47+ services/staff-service/package.json \
5248 node_modules \
49+ pnpm-lock.yaml \
5350 ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/
5451
55- # Restart services
52+ # ---------------- FRONTEND DEPLOY ----------------
53+ - name : Deploy Frontend Standalone
54+ run : |
55+ ssh -i ~/.ssh/ec2.pem ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} \
56+ "mkdir -p ${{ secrets.APP_DIR }}/frontend"
57+
58+ rsync -avz --delete \
59+ -e "ssh -i ~/.ssh/ec2.pem" \
60+ frontend/.next/standalone/ \
61+ ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/frontend/
62+
63+ rsync -avz \
64+ -e "ssh -i ~/.ssh/ec2.pem" \
65+ frontend/.next/static/ \
66+ ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/frontend/.next/static/
67+
68+ rsync -avz \
69+ -e "ssh -i ~/.ssh/ec2.pem" \
70+ frontend/public/ \
71+ ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/frontend/public/
72+
5673 - name : Restart Services
5774 run : |
5875 ssh -i ~/.ssh/ec2.pem ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
6380 pm2 reload staff-service || pm2 start services/staff-service/dist/server.js --name staff-service
6481
6582 cd frontend
66- pm2 reload frontend || PORT=3000 pm2 start .next/standalone/frontend/ server.js --name frontend
83+ pm2 reload frontend || PORT=3000 pm2 start server.js --name frontend
6784
6885 pm2 save
6986 EOF
0 commit comments