-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeploy-shell.sh
114 lines (102 loc) · 2.2 KB
/
deploy-shell.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
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/bash
#Date/Time
CTIME=$(date "+%Y-%m-%d-%H-%M")
# Shell Env
SHELL_NAME="deploy_all.sh"
SHELL_DIR="/home/www/"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
#Code Env
CODE_DIR="/deploy/code/deploy"
CONFIG_DIR="/deploy/config"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
LOCK_FILE="/tmp/deploy.lock"
usage(){
echo $"Usage: $0 { deploy | rollback-list | rollback-pro ver}"
}
write_log() {
LOGINFO=$1
echo "${CTIME}: ${SHELL_NAME} : ${LOGINFO} " >> ${SHELL_LOG}
}
shell_lock(){
touch ${LOCK_FILE}
}
shell_unlock(){
rm -f ${LOCK_FILE}
}
git_pro(){
write_log "git_pro"
cd "$CODE_DIR" && git pull
API_VERL=$(git show | grep commit | cut -d ' ' -f2)
API_VER=$(echo ${API_VERL:0:6})
cp -r "$CODE_DIR" "$TMP_DIR"
}
config_pro(){
#copy pro config to dir
write_log "config_pro"
/bin/cp "$CONFIG_DIR"/* $TMP_DIR/deploy/
TAR_VER="$API_VER"-"$CTIME"
cd $TMP_DIR && mv deploy pro_deploy_"$TAR_VER"
}
tar_pro(){
#begin tar
write_log "tar_pro"
cd $TMP_DIR && tar czf pro_deploy_"$TAR_VER".tar.gz pro_deploy_"$TAR_VER"
echo "tar end pro_deploy_"$TAR_VER".tar.gz"
}
scp_pro(){
#begin scp
write_log "scp_pro"
/bin/cp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz /opt
#scp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz 192.168.1.2:/opt
#scp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz 192.168.1.3:/opt
#scp $TMP_DIR/pro_deploy_"$TAR_VER".tar.gz 192.168.1.4:/opt
}
#执行部署操作
deploy_pro(){
#begin deploy,socat haproxy unix nginx
write_log "deploy_pro"
cd /opt && tar zxf pro_deploy_"$TAR_VER".tar.gz
rm -f /var/www/html && ln -s /opt/pro_deploy_"$TAR_VER" /var/www/html
}
#测试部署
test_pro(){
#begin test
write_log "test_pro"
#curl --head http://192.168.56.31/index.php | grep xxxx
echo "add cluster" # socat haproxy-nginx+php
}
#回滚列表
rollback_list(){
# list rollback version
write_log "rollback_list"
ls -l /opt/*.tar.gz
}
#制定版本回滚
rollback_pro(){
#ssh 192.168.56.31
write_log "rollback_pro"
rm -f /var/www/html && ln -s /opt/$1 /var/www/html
}
#主函数,对之前编写的进行组合
main(){
case $1 in
deploy)
git_pro;
config_pro;
tar_pro;
scp_pro;
deploy_pro;
test_pro;
;;
rollback-list)
rollback_list;
;;
rollback-pro)
rollback_pro $2;
;;
*)
usage;
esac
}
main $1 $2