55 branches :
66 - stage
77
8-
9-
108jobs :
119 deploy :
1210 runs-on : ubuntu-latest
1311
1412 steps :
15-
1613 - name : Checkout code
1714 uses : actions/checkout@v4
1815
@@ -24,98 +21,90 @@ jobs:
2421 - name : Setup pnpm
2522 uses : pnpm/action-setup@v4
2623
27-
28- - name : Setup SSH
29- run : |
30- mkdir -p ~/.ssh
31- echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/id_ed25519
32- chmod 600 ~/.ssh/id_ed25519
33- ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts
34-
24+ # BUILD FRONTEND
3525 - name : Build Frontend
3626 env :
3727 NEXT_PUBLIC_API_BASE_URL : https://api.autospace.space
38- BASE_URL_API : https://api.autospace.space
28+ BASE_URL_API : https://api.autospace.space
3929 run : |
40- cd nextjs-autospace
30+ cd nextjs-autospace
4131 pnpm install
42- pnpm build
32+ pnpm build
4333
44- - name : Compress build
34+ # PACKAGE EVERYTHING NEEDED
35+ - name : Compress Frontend
4536 run : |
4637 cd nextjs-autospace
47- tar -czf frontend.tar.gz .next public package.json
38+ tar -czf frontend.tar.gz .next public
4839
40+ # SSH SETUP
41+ - name : Setup SSH
42+ run : |
43+ mkdir -p ~/.ssh
44+ echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/id_ed25519
45+ chmod 600 ~/.ssh/id_ed25519
46+ ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts
47+
48+ # UPLOAD BUILD
4949 - name : Upload to EC2
5050 run : |
51- # ssh -i ~/.ssh/id_ed25519 ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "mkdir -p ~/frontend"
5251 scp -i ~/.ssh/id_ed25519 nextjs-autospace/frontend.tar.gz ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:~/frontend/
5352
53+ # DEPLOY EVERYTHING
5454 - name : Deploy to EC2
5555 run : |
56-
5756 ssh -i ~/.ssh/id_ed25519 ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
5857 set -e
5958
6059 export CI=true
6160
62- echo "Deploying API Gateway..."
61+ echo " Backend Deploy..."
62+
6363 cd ~/autospace
6464 git fetch origin
6565 git reset --hard origin/stage
66-
6766
6867 cd nodejs-autospace/api-gateway
69- CI=true pnpm install --prod --ignore-scripts
70- NODE_ENV=stage pm2 restart api-gateway || NODE_ENV=stage pm2 start dist/index.js --name api-gateway
68+ pnpm install --prod --ignore-scripts
69+ pm2 restart api-gateway || pm2 start dist/index.js --name api-gateway
7170
72- echo "Deploying Auth Service..."
73- cd ~/auth-service/autospace
74- git fetch origin
75- git reset --hard origin/stage
76-
71+ cd ~/auth-service/autospace/nodejs-autospace/auth-service
72+ pnpm install --prod --ignore-scripts
73+ pm2 restart auth-service || pm2 start dist/server.js --name auth-service
7774
78- cd nodejs-autospace/auth -service
79- CI=true pnpm install --prod --ignore-scripts
80- NODE_ENV=stage pm2 restart auth -service || NODE_ENV=stage pm2 start dist/server.js --name auth -service
75+ cd ~/resource-service/autospace/ nodejs-autospace/resource -service
76+ pnpm install --prod --ignore-scripts
77+ pm2 restart resource -service || pm2 start dist/server.js --name resource -service
8178
82- echo "Deploying Resource Service..."
83- cd ~/resource-service/autospace
84- git fetch origin
85- git reset --hard origin/stage
86-
87-
88- cd nodejs-autospace/resource-service
89- CI=true pnpm install --prod --ignore-scripts
90- NODE_ENV=stage pm2 restart resource-service || NODE_ENV=stage pm2 start dist/server.js --name resource-service
91-
92- echo "Deploying Booking Service..."
9379 cd ~/booking-service/nodejs-autospace/booking-service
80+ pnpm install --prod --ignore-scripts
81+ pm2 restart booking-service || pm2 start dist/server.js --name booking-service
9482
95- git fetch origin
96- git reset --hard origin/stage
97-
98- CI=true pnpm install --prod --ignore-scripts
99- NODE_ENV=stage pm2 restart booking-service || NODE_ENV=stage pm2 start dist/server.js --name booking-service
100-
101-
102- echo "Cleaning frontend..."
103-
83+ echo " Clean frontend..."
10484 rm -rf ~/frontend/app
10585 mkdir -p ~/frontend/app
10686
107- echo "Extracting frontend..."
108-
87+ echo " Extract frontend..."
10988 cd ~/frontend
11089 tar -xzf frontend.tar.gz -C app
11190 rm frontend.tar.gz
11291
113- echo "Deploying Frontend... "
92+ echo " Fix standalone runtime (IMPORTANT) "
11493
11594 cd ~/frontend/app/.next/standalone/nextjs-autospace
11695
96+ mkdir -p .next
97+
98+ cp -r ~/frontend/app/.next/static .next/
99+ cp -r ~/frontend/app/.next/server .next/
100+ cp ~/frontend/app/.next/BUILD_ID .next/
101+ cp -r ~/frontend/app/public ./public
102+
103+ echo " Restart frontend"
117104 pm2 delete frontend || true
118105 PORT=3000 pm2 start server.js --name frontend
119106
120107 pm2 save
121- EOF
108+
109+ echo " DEPLOY DONE"
110+ EOF
0 commit comments