-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
74 lines (61 loc) · 2.83 KB
/
deploy.sh
File metadata and controls
74 lines (61 loc) · 2.83 KB
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
#!/bin/bash
# Load environment variables from .env file
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
else
echo ".env file not found!"
exit 1
fi
# Ensure PASSWORD is set
if [ -z "$PASSWORD" ]; then
echo "PASSWORD not set in .env file!"
exit 1
fi
# Define variables
INTERMEDIATE_HOST="10.42.0.1"
FINAL_HOST="192.168.1.100"
INTERMEDIATE_DEST="/home/orangepi"
FINAL_DEST="/home/easternspork"
INTERMEDIATE_USER="orangepi"
FINAL_USER="easternspork"
COMPUTE_FOLDER="compute"
CONTROL_FOLDER="control"
EXCLUDE_FOLDER="build"
# Copy compute folder to the intermediate host
echo "Copying $COMPUTE_FOLDER to $INTERMEDIATE_HOST..."
sshpass -p "$PASSWORD" scp -r "$COMPUTE_FOLDER" "$INTERMEDIATE_USER@$INTERMEDIATE_HOST:$INTERMEDIATE_DEST"
# Check if the copy was successful
if [ $? -ne 0 ]; then
echo "Failed to copy $COMPUTE_FOLDER to $INTERMEDIATE_HOST"
exit 1
fi
# Check if the --compute-only flag is used, and skip control-related tasks if true
if [[ "$1" != "--compute-only" ]]; then
# Copy control folder to the intermediate host, excluding the build folder
echo "Copying $CONTROL_FOLDER to $INTERMEDIATE_HOST, excluding $EXCLUDE_FOLDER..."
sshpass -p "$PASSWORD" rsync -av --exclude="$EXCLUDE_FOLDER" "$CONTROL_FOLDER/" "$INTERMEDIATE_USER@$INTERMEDIATE_HOST:$INTERMEDIATE_DEST/$CONTROL_FOLDER"
# Check if the copy was successful
if [ $? -ne 0 ]; then
echo "Failed to copy $CONTROL_FOLDER to $INTERMEDIATE_HOST"
exit 1
fi
# Copy control folder from the intermediate host to the final destination
echo "Copying $CONTROL_FOLDER from $INTERMEDIATE_HOST to $FINAL_HOST..."
sshpass -p "$PASSWORD" ssh "$INTERMEDIATE_USER@$INTERMEDIATE_HOST" "sshpass -p '$PASSWORD' scp -r $INTERMEDIATE_DEST/$CONTROL_FOLDER $FINAL_USER@$FINAL_HOST:$FINAL_DEST"
# Check if the copy was successful
if [ $? -ne 0 ]; then
echo "Failed to copy $CONTROL_FOLDER to $FINAL_HOST"
exit 1
fi
# Delete control folder from the intermediate host
echo "Deleting $CONTROL_FOLDER from $INTERMEDIATE_HOST..."
sshpass -p "$PASSWORD" ssh "$INTERMEDIATE_USER@$INTERMEDIATE_HOST" "rm -rf $INTERMEDIATE_DEST/$CONTROL_FOLDER"
# SSH into the final host and clean and build the project
echo "Building project on $FINAL_HOST..."
sshpass -p "$PASSWORD" ssh "$INTERMEDIATE_USER@$INTERMEDIATE_HOST" "sshpass -p '$PASSWORD' ssh -t $FINAL_USER@$FINAL_HOST 'cd $FINAL_DEST/control; sh build.sh'"
echo "Deployment and build completed successfully."
fi
# Restart services
echo "Restarting services..."
# sshpass -p "$PASSWORD" ssh "$INTERMEDIATE_USER@$INTERMEDIATE_HOST" "sudo -S systemctl restart mistletoe-compute.service"
# sshpass -p "$PASSWORD" ssh "$INTERMEDIATE_USER@$INTERMEDIATE_HOST" "sshpass -p '$PASSWORD' ssh $FINAL_USER@$FINAL_HOST 'sudo -S systemctl restart mistletoe-control.service'"