1
- name : CI-CD
1
+ name : CI-CD (Production)
2
2
3
- on :
3
+ on :
4
4
push :
5
5
branches : [ main ]
6
6
workflow_dispatch :
@@ -11,15 +11,9 @@ concurrency:
11
11
12
12
jobs :
13
13
deploy :
14
- runs-on : ubuntu-latest
14
+ environment : production
15
15
16
- env :
17
- # local paths
18
- BACKEND_DIR : backend
19
- FRONTEND_DIR : frontend
20
- # remote paths
21
- REMOTE_APP_DIR : /var/www/tenantfirstaid
22
- SERVICE_NAME : tenantfirstaid-backend
16
+ runs-on : ubuntu-latest
23
17
24
18
steps :
25
19
- uses : actions/checkout@v4
@@ -29,43 +23,43 @@ jobs:
29
23
with :
30
24
node-version : 20
31
25
cache : npm
32
- cache-dependency-path : ${{ env .FRONTEND_DIR }}/package-lock.json
26
+ cache-dependency-path : ${{ vars .FRONTEND_DIR }}/package-lock.json
33
27
34
28
- name : Build UI
35
- working-directory : ${{ env .FRONTEND_DIR }}
29
+ working-directory : ${{ vars .FRONTEND_DIR }}
36
30
run : |
37
31
npm ci
38
32
npm run build
39
33
40
34
- name : Upload backend code via SCP
41
35
42
36
with :
43
- host : ${{ secrets.DO_HOST }}
44
- username : ${{ secrets.DO_USER }}
37
+ host : ${{ vars.URL }}
38
+ username : ${{ secrets.SSH_USER }}
45
39
key : ${{ secrets.SSH_KEY }}
46
- source : ${{ env .BACKEND_DIR }}/
47
- target : ${{ env .REMOTE_APP_DIR }}
40
+ source : ${{ vars .BACKEND_DIR }}/
41
+ target : ${{ vars .REMOTE_APP_DIR }}
48
42
rm : true
49
43
50
44
- name : Upload frontend code via SCP
51
45
52
46
with :
53
- host : ${{ secrets.DO_HOST }}
54
- username : ${{ secrets.DO_USER }}
47
+ host : ${{ vars.URL }}
48
+ username : ${{ secrets.SSH_USER }}
55
49
key : ${{ secrets.SSH_KEY }}
56
- source : ${{ env .FRONTEND_DIR }}/dist
57
- target : ${{ env .REMOTE_APP_DIR }}
50
+ source : ${{ vars .FRONTEND_DIR }}/dist
51
+ target : ${{ vars .REMOTE_APP_DIR }}
58
52
rm : false # Otherwise we wipe out the backend code
59
53
60
54
- name : Bootstrap on droplet
61
55
62
56
with :
63
- host : ${{ secrets.DO_HOST }}
64
- username : ${{ secrets.DO_USER }}
57
+ host : ${{ vars.URL }}
58
+ username : ${{ secrets.SSH_USER }}
65
59
key : ${{ secrets.SSH_KEY }}
66
60
script : |
67
61
set -e
68
- cd ${{ env .REMOTE_APP_DIR }}/backend/
62
+ cd ${{ vars .REMOTE_APP_DIR }}/backend/
69
63
70
64
# Install uv (fast installer from Astral) if it isn't there
71
65
if ! command -v uv >/dev/null 2>&1; then
@@ -81,19 +75,19 @@ jobs:
81
75
sudo chmod 750 /etc/tenantfirstaid
82
76
sudo chown root:root /etc/tenantfirstaid
83
77
cat > /etc/tenantfirstaid/env <<EOF
84
- ENV=prod
78
+ ENV=${{ vars.ENV }}
85
79
OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
86
80
FLASK_SECRET_KEY=${{ secrets.FLASK_SECRET_KEY }}
87
81
DB_HOST=${{secrets.DB_HOST}}
88
82
DB_PASSWORD=${{secrets.DB_PASSWORD}}
89
- DB_PORT=${{secrets .DB_PORT}}
83
+ DB_PORT=${{vars .DB_PORT}}
90
84
DB_USER=default
91
85
MODEL_REASONING_EFFORT=high
92
86
VECTOR_STORE_ID=${{secrets.VECTOR_STORE_ID}}
93
87
EOF
94
88
chmod 640 /etc/tenantfirstaid/env
95
89
96
90
# Ownership, restart, reload
97
- sudo chown -R $USER:www-data ${{ env .REMOTE_APP_DIR }}
98
- sudo systemctl restart ${{ env .SERVICE_NAME }}
91
+ sudo chown -R $USER:www-data ${{ vars .REMOTE_APP_DIR }}
92
+ sudo systemctl restart ${{ vars .SERVICE_NAME }}
99
93
sudo systemctl reload nginx
0 commit comments