-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeploy.sh
executable file
·102 lines (86 loc) · 3.27 KB
/
deploy.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/bash
path="/var/www/port-flow"
pathToUI="/var/www/port-flow/UI/"
pathToAPI="/var/www/port-flow/API/"
pathToLogFile="/var/www/port-flow/deploy.log"
cd $path || { echo "Failed to change directory to $path"; exit 1; }
date=$(date)
# Source NVM and set up Node environment
export NVM_DIR="$HOME/.nvm"
if [ -s "$NVM_DIR/nvm.sh" ]; then
. "$NVM_DIR/nvm.sh"
else
echo "ERROR: NVM is not installed or nvm.sh not found" >> $pathToLogFile
exit 1
fi
# Verify if yarn is available
if ! command -v yarn &> /dev/null; then
echo "ERROR: Yarn is not installed or not in the PATH" >> $pathToLogFile
exit 1
fi
# Ensure the PATH includes the NVM binaries
export PATH="$NVM_DIR/versions/node/$(nvm current)/bin:$PATH"
# Log the PATH for debugging
echo "PATH: $PATH" >> $pathToLogFile
if [ ! -f $pathToLogFile ]; then
touch $pathToLogFile || { echo "Failed to create log file"; exit 1; }
fi
echo "-----------------------------------" >> $pathToLogFile
echo "Deployment started at: ${date}" >> $pathToLogFile
echo "Running as $(whoami)" >> $pathToLogFile
if ! git pull >> $pathToLogFile 2>&1; then
echo "ERROR: Git pull failed" >> $pathToLogFile
echo "Stopping deployment" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile
exit 1
fi
cd $pathToUI || { echo "Failed to change directory to $pathToUI"; exit 1; }
if ! yarn install >> $pathToLogFile 2>&1; then
echo "ERROR: Yarn install failed" >> $pathToLogFile
echo "Stopping deployment" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile
exit 1
fi
if ! yarn build >> $pathToLogFile 2>&1; then
echo "ERROR: Yarn build failed" >> $pathToLogFile
echo "Stopping deployment" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile
exit 1
fi
if ! pm2 restart port-flow >> $pathToLogFile 2>&1; then
echo "ERROR: PM2 restart failed" >> $pathToLogFile
echo "Stopping deployment" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile
exit 1
fi
cd $pathToAPI || { echo "Failed to change directory to $pathToAPI"; exit 1; }
if dotnet publish >> $pathToLogFile 2>&1; then
echo "API published" >> $pathToLogFile
else
echo "ERROR: API not published" >> $pathToLogFile
echo "Stopping deployment" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile
exit 1
fi
# Debugging: Log before stopping the service
echo "Stopping service..." >> $pathToLogFile
if sudo -n systemctl stop api.port-flow.service >> $pathToLogFile 2>&1; then
echo "Service stopped" >> $pathToLogFile
else
echo "ERROR: Service not stopped" >> $pathToLogFile
echo "Stopping deployment" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile
exit 1
fi
# Debugging: Log before starting the service
echo "Starting service..." >> $pathToLogFile
if sudo -n systemctl start api.port-flow.service >> $pathToLogFile 2>&1; then
echo "Service started" >> $pathToLogFile
else
echo "ERROR: Service not started" >> $pathToLogFile
echo "Stopping deployment" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile
exit 1
fi
echo "Deployment finished at: $(date)" >> $pathToLogFile
echo "-----------------------------------" >> $pathToLogFile