Skip to content

Commit c9d1cb9

Browse files
committed
CD: deploy.yml
1 parent d6bad04 commit c9d1cb9

1 file changed

Lines changed: 21 additions & 54 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 21 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Deploy Microservices to EC2
1+
name: Deploy Microservices (Artifact Mode)
22

33
on:
44
push:
@@ -21,86 +21,53 @@ jobs:
2121
node-version: 20
2222
cache: "pnpm"
2323

24+
# Install full workspace deps
2425
- name: Install dependencies
2526
run: pnpm install --frozen-lockfile
2627

27-
- name: Build all services
28+
# Build everything
29+
- name: Build workspace
2830
run: pnpm -r run build
2931

30-
# ---------- SSH SETUP ----------
32+
# Remove dev dependencies
33+
- name: Prune dev dependencies
34+
run: pnpm prune --prod
35+
36+
# SSH setup
3137
- name: Setup SSH
3238
run: |
3339
mkdir -p ~/.ssh
3440
echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/ec2.pem
3541
chmod 600 ~/.ssh/ec2.pem
3642
ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts
3743
38-
# ---------- DEPLOY BACKEND ----------
39-
- name: Deploy Backend Services
44+
# Deploy full production bundle
45+
- name: Deploy to EC2
4046
run: |
4147
rsync -avz --delete \
4248
-e "ssh -i ~/.ssh/ec2.pem" \
43-
api-gateway/dist \
44-
services/patient-service/dist \
45-
services/staff-service/dist \
46-
services/shared/dist \
47-
api-gateway/package.json \
48-
services/patient-service/package.json \
49-
services/staff-service/package.json \
50-
pnpm-workspace.yaml \
49+
api-gateway \
50+
services \
51+
frontend/.next \
52+
frontend/public \
5153
package.json \
5254
pnpm-lock.yaml \
55+
pnpm-workspace.yaml \
56+
node_modules \
5357
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/
5458
55-
- name: Install production dependencies & reload backend
59+
# Restart services
60+
- name: Restart Services
5661
run: |
5762
ssh -i ~/.ssh/ec2.pem ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
58-
set -e
59-
export NVM_DIR="$HOME/.nvm"
60-
source "$NVM_DIR/nvm.sh"
61-
6263
cd ${{ secrets.APP_DIR }}
6364
64-
CI=true pnpm install --prod --frozen-lockfile --ignore-scripts --force
65-
6665
pm2 reload api-gateway || pm2 start api-gateway/dist/server.js --name api-gateway
6766
pm2 reload patient-service || pm2 start services/patient-service/dist/server.js --name patient-service
6867
pm2 reload staff-service || pm2 start services/staff-service/dist/server.js --name staff-service
6968
70-
pm2 save
71-
EOF
72-
73-
# ---------- DEPLOY FRONTEND ----------
74-
- name: Deploy Frontend
75-
run: |
76-
ssh -i ~/.ssh/ec2.pem ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} \
77-
"mkdir -p ${{ secrets.APP_DIR }}/frontend-deploy/frontend/.next/static ${{ secrets.APP_DIR }}/frontend-deploy/frontend/public"
78-
79-
rsync -avz --delete \
80-
-e "ssh -i ~/.ssh/ec2.pem" \
81-
frontend/.next/standalone/ \
82-
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/frontend-deploy/
83-
84-
rsync -avz \
85-
-e "ssh -i ~/.ssh/ec2.pem" \
86-
frontend/public/ \
87-
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/frontend-deploy/frontend/public/
88-
89-
rsync -avz \
90-
-e "ssh -i ~/.ssh/ec2.pem" \
91-
frontend/.next/static/ \
92-
${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:${{ secrets.APP_DIR }}/frontend-deploy/frontend/.next/static/
93-
94-
- name: Restart Frontend
95-
run: |
96-
ssh -i ~/.ssh/ec2.pem ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
97-
set -e
98-
export NVM_DIR="$HOME/.nvm"
99-
source "$NVM_DIR/nvm.sh"
100-
101-
cd ${{ secrets.APP_DIR }}/frontend-deploy/frontend
102-
103-
pm2 reload frontend || PORT=3000 pm2 start server.js --name frontend
69+
cd frontend
70+
pm2 reload frontend || PORT=3000 pm2 start .next/standalone/frontend/server.js --name frontend
10471
10572
pm2 save
10673
EOF

0 commit comments

Comments
 (0)