-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeploy.sh
151 lines (133 loc) · 4.01 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/bin/bash
#---------------------------------------
# INICIANDO VARIÁVEIS
#---------------------------------------
BOLD=$(tput bold)
NORMAL=$(tput sgr0)
EXCLUDE='"../*" ".git/*"';
SERVER="";
TAG="";
PROJECT="/var/www/${PWD##*/}";
SERVER_FOLDER="/var/www/${PWD##*/}";
#---------------------------------------
# RECUPERANDO PARAMETROS
#---------------------------------------
while getopts ":h :s: :t: :p: :f: :n" optname
do
case "$optname" in
"h")
echo "-h exibe essa ajuda"
echo "-s define o servidor de produção"
echo "-t define a tag do projeto"
echo "-n cria a próxima tag do projeto (ex. v1.1.2 => v1.1.3)"
echo "-p define a pasta do projeto localmente (/var/www/<seu_local_atual> sera usado caso nada seja especificado)"
echo "-f define a pasta do projeto no servidor (/var/www/<seu_local_atual> sera usado caso nada seja especificado)"
exit;
;;
"s")
SERVER="$OPTARG"
;;
"t")
TAG="$OPTARG"
;;
"p")
PROJECT="$OPTARG"
;;
"f")
SERVER_FOLDER="$OPTARG"
;;
"n")
OLD_TAG=$(git describe --abbrev=0 --tags)
NUMBER=${OLD_TAG##*.}
TAG=${OLD_TAG%.*}.$((NUMBER + 1))
;;
"?")
echo "Parametro $OPTARG não conhecido"
exit;
;;
":")
echo "Nenhum parametro enviado apra $OPTARG"
exit;
;;
esac
done
#---------------------------------------
# VALIDA AS INFORMAÇẼOS
#---------------------------------------
if [ "$PROJECT" == "/var/www/" ] || [ "$SERVER_FOLDER" == "/var/www/" ] || [ "$SERVER" == "" ] || [ "$TAG" == "" ]; then
echo "Diga qual o servidor e a tag projeto que deseja atualizar";
exit;
fi
if [ ! -d "$PROJECT" ]; then
echo "Não foi possível acessar $PROJECT, verifica se o caminho para o projeto está correto"
exit;
fi
#---------------------------------------
# CONFIRMA OS DADOS
#---------------------------------------
echo ""
echo "--- DADOS PARA ENVIO DO PROJETO ---"
echo ""
echo -e "Projeto a ser enviado: ${BOLD}$PROJECT${NORMAL}"
echo -e "Tag do projeto: ${BOLD}$TAG${NORMAL}"
echo -e "Servidor: ${BOLD}$SERVER${NORMAL}"
echo -e "Pasta do servidor: ${BOLD}$SERVER_FOLDER${NORMAL}"
echo ""
read -p "Confirmar envio? [Ss | Nn]" -n 1 -r
echo # Pula linha
if [[ ! $REPLY =~ ^[Ss]$ ]]
then
echo "Abortando envio"
exit;
fi
#---------------------------------------
# VERIFICA A TAG
#---------------------------------------
git checkout $TAG
if [ $? != 0 ]; then
echo # Pula linha
read -p "a tag $TAG não existe, deseja criá-la (vou criá-la a partir do branch master)? [Ss | Nn]" -n 1 -r
echo # Pula linha
if [[ $REPLY =~ ^[Ss]$ ]]
then
echo "Diga o comentário da tag: "
read COMMENT
git checkout master
git tag -a $TAG -m "$COMMENT"
git checkout $TAG
else
echo "Abortando envio"
exit;
fi
fi
#---------------------------------------
# ZIPA O PACOTE
#---------------------------------------
NOW="$(date +'%Y-%m-%d')"
OUTPUTFILE="$NOW-${PWD##*/}_$TAG.zip"
zip -r $OUTPUTFILE .* -x "../*" ".git/*"
#---------------------------------------
# ACESSANDO OS SERVER VIA SFTP
#---------------------------------------
sftp $SERVER << EOF
put $OUTPUTFILE
EOF
#---------------------------------------
# VOLTA PARA O BRANCH DEV NA MÁQUINA LOCAL
#---------------------------------------
rm $OUTPUTFILE
git checkout dev
#---------------------------------------
# ACESSANDO OS SERVER VIA SSH
#---------------------------------------
ssh $SERVER << EOF
if [ ! -d "$SERVER_FOLDER" ]; then
echo "Não foi possível acessar $SERVER_FOLDER, verifica se o caminho para o projeto está correto"
sudo rm -rf $OUTPUTFILE
exit 1;
fi
sudo mv $OUTPUTFILE $SERVER_FOLDER
cd $SERVER_FOLDER
sudo unzip -o $OUTPUTFILE
sudo rm $OUTPUTFILE
EOF