@@ -17,9 +17,12 @@ concurrency:
1717 cancel-in-progress : true
1818
1919jobs :
20- build :
21- name : Build
20+ deploy :
21+ name : Build and Deploy
2222 runs-on : ubuntu-latest
23+ environment :
24+ name : production
25+ url : https://exam-cooker.acmvit.in
2326
2427 steps :
2528 - name : Checkout
@@ -31,70 +34,47 @@ jobs:
3134 node-version : 24
3235 cache : npm
3336
37+ - name : Restore Next.js build cache
38+ uses : actions/cache@v4
39+ with :
40+ path : .next/cache
41+ key : ${{ runner.os }}-next-${{ hashFiles('package-lock.json') }}-${{ hashFiles('next.config.ts', 'tsconfig.json', 'tailwind.config.ts', 'postcss.config.mjs') }}
42+ restore-keys : |
43+ ${{ runner.os }}-next-${{ hashFiles('package-lock.json') }}-
44+
3445 - name : Install dependencies
35- run : npm ci
46+ run : npm ci --no-audit --prefer-offline
3647
3748 - name : Build application
3849 run : npm run build
3950
40- - name : Trim dev dependencies
41- run : npm prune --omit=dev
42-
4351 - name : Package deployment payload
4452 run : |
4553 set -eux
4654 rm -rf deploy
4755 mkdir -p deploy
4856
49- rsync -a .next/ deploy/.next/
50- rsync -a node_modules/ deploy/node_modules/
51-
52- mkdir -p deploy/src/generated
53- rsync -a src/generated/ deploy/src/generated/
54-
55- cp package.json deploy/package.json
56- cp next.config.ts deploy/next.config.ts
57+ rsync -a .next/standalone/ deploy/
58+ mkdir -p deploy/.next
59+ rsync -a .next/static/ deploy/.next/static/
5760 cp startup.sh deploy/startup.sh
5861
59- if [ -f package-lock.json ]; then
60- cp package-lock.json deploy/package-lock.json
61- fi
62-
6362 if [ -d public ]; then
6463 rsync -a public/ deploy/public/
6564 fi
6665
66+ if [ -d src/generated ]; then
67+ mkdir -p deploy/src/generated
68+ rsync -a src/generated/ deploy/src/generated/
69+ fi
70+
6771 if [ -d prisma ]; then
6872 rsync -a prisma/ deploy/prisma/
6973 fi
7074
71- rm -rf deploy/.next/cache
72-
7375 cd deploy
7476 zip -qry ../webapp-package.zip .
7577
76- - name : Upload deployment artifact
77- uses : actions/upload-artifact@v4
78- with :
79- name : webapp-package
80- path : webapp-package.zip
81- if-no-files-found : error
82-
83- deploy :
84- name : Deploy
85- runs-on : ubuntu-latest
86- needs : build
87- environment :
88- name : production
89- url : https://exam-cooker.acmvit.in
90-
91- steps :
92- - name : Download deployment artifact
93- uses : actions/download-artifact@v4
94- with :
95- name : webapp-package
96- path : .
97-
9878 - name : Deploy to Azure App Service
9979 uses : azure/webapps-deploy@v3
10080 with :
0 commit comments