1- # Деплой бэкенда при push в ветку backend-prod.
2- # Сборка server/ (shared + tsc + dist), загрузка на хостинг по SSH.
3- name : Deploy Backend (prod)
1+ name : Deploy Backend (prod) FTP
42
53on :
64 push :
75 branches : [backend-prod]
86
97jobs :
10- build :
8+ deploy :
119 runs-on : ubuntu-latest
1210 steps :
1311 - uses : actions/checkout@v4
1412
1513 - uses : actions/setup-node@v4
1614 with :
1715 node-version : " 20"
18- cache : " npm"
19- cache-dependency-path : |
20- server/package-lock.json
21- shared/package-lock.json
2216
2317 - name : Install and build shared
2418 run : |
@@ -30,52 +24,25 @@ jobs:
3024
3125 - name : Build server
3226 run : |
33- cd server && npx tsc && node scripts/build-deploy.mjs
27+ cd server
28+ npx tsc
29+ node scripts/build-deploy.mjs
3430
35- - name : Prepare deploy bundle (dist + shared for file:../shared)
31+ - name : Prepare deploy bundle
3632 run : |
3733 mkdir -p _deploy
3834 cp -r server/dist _deploy/dist
3935 cp -r shared _deploy/shared
36+ cp server/package.json _deploy/package.json
37+ cp server/package-lock.json _deploy/package-lock.json
38+ if [ -d "server/prisma" ]; then cp -r server/prisma _deploy/prisma; fi
4039
41- - name : Upload artifact
42- uses : actions/upload-artifact@v4
43- with :
44- name : back-dist
45- path : _deploy
46-
47- deploy :
48- needs : build
49- runs-on : ubuntu-latest
50- steps :
51- - name : Download artifact
52- uses : actions/download-artifact@v4
53- with :
54- name : back-dist
55-
56- - name : Deploy via SSH (rsync)
57- uses : burnett01/rsync-deployments@v7.0.2
58- with :
59- switches : -avzr --delete
60- path : ./
61- remote_path : ${{ secrets.DEPLOY_PATH }}/
62- remote_host : ${{ secrets.SSH_HOST }}
63- remote_user : ${{ secrets.SSH_USER }}
64- remote_key : ${{ secrets.SSH_PRIVATE_KEY }}
65-
66- - name : Install deps and restart on server
67- uses : appleboy/ssh-action@v1.0.3
40+ - name : Upload via FTP
41+ uses : SamKirkland/FTP-Deploy-Action@v4.3.5
6842 with :
69- host : ${{ secrets.SSH_HOST }}
70- username : ${{ secrets.SSH_USER }}
71- key : ${{ secrets.SSH_PRIVATE_KEY }}
72- script_stderr : true
73- script : |
74- cd ${{ secrets.DEPLOY_PATH }}/dist
75- npm ci
76- npx prisma generate
77- pm2 restart dayflow-server || pm2 start index.js --name dayflow-server
78- pm2 save
79- exit 0
80- env :
81- DEPLOY_PATH : ${{ secrets.DEPLOY_PATH }}
43+ server : ${{ secrets.BACKEND_FTP_SERVER }}
44+ username : ${{ secrets.BACKEND_FTP_USERNAME }}
45+ password : ${{ secrets.BACKEND_FTP_PASSWORD }}
46+ local-dir : _deploy/
47+ server-dir : ./
48+ dangerous-clean-slate : false
0 commit comments