Last active
December 11, 2020 12:32
-
-
Save tiagofaustino/d2623583ab88421455bd427b2b1821aa to your computer and use it in GitHub Desktop.
Shell Script usado para fazer deploy de arquivos WAR no Tomcat (usando versão 6 no exemplo). E que foram colocados em uma determinada pasta. Ideal para ser executado num robô toda a noite por exemplo.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
PASTA_ORIGEM=/usr/share/deploy_producao/deploy_novo | |
TOMCAT_HOME=/usr/local/tomcat | |
TEMPO_SLEEP=20 | |
PASTA_EXECUTADOS=/usr/share/deploy_producao/deploy_executado | |
LOG_FILE=/usr/share/deploy_producao/deploy_producao.log | |
#Verifica se foi passado algum nome de war por parametro. | |
#Quando isso acontecer, só será feito deploy deste war. | |
# Ex.: ./atualizaProducao.sh sistema.war | |
if [ "$1" != "" ]; then | |
ARQUIVOS_BASE=$PASTA_ORIGEM/$1 | |
else | |
ARQUIVOS_BASE=$PASTA_ORIGEM/*.war | |
fi | |
NUM_ARQUIVOS=$(ls $ARQUIVOS_BASE 2> /dev/null | wc -l) | |
if [ "$NUM_ARQUIVOS" == "0" ] | |
then | |
if [ "$1" != "" ]; then | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - O war $1 nao existe na pasta $PASTA_ORIGEM" >> $LOG_FILE | |
else | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - Nao existem wars na pasta $PASTA_ORIGEM" >> $LOG_FILE | |
fi | |
else | |
TEMPO_SLEEP_TOTAL=$(( TEMPO_SLEEP * NUM_ARQUIVOS )) | |
##### Fase 1: Undeploy dos wars | |
for f in $ARQUIVOS_BASE | |
do | |
filename=$(basename "$f") | |
filename_no_extension=${filename%.*} | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - Arquivo $filename encontrado." >> $LOG_FILE | |
#remove o war do tomcat | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - rm -f $TOMCAT_HOME/webapps/$filename" >> $LOG_FILE | |
rm -f $TOMCAT_HOME/webapps/$filename | |
done | |
##### Fase 2: Parar servidor | |
#espera o undeploy | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - Esperando o undeploy $TEMPO_SLEEP_TOTAL segundos" >> $LOG_FILE | |
sleep $TEMPO_SLEEP_TOTAL | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - $TOMCAT_HOME/bin/./shutdown.sh" >> $LOG_FILE | |
$TOMCAT_HOME/bin/./shutdown.sh | |
sleep $(( 7 * NUM_ARQUIVOS )) | |
#Garante que o processo do tomcat foi parado | |
kill -9 $(ps -eo pid,command | grep "classpath $TOMCAT_HOME/bin/bootstrap.jar" | grep -v grep | awk '{print $1}') | |
##### Fase 3: Limpar pastas de trabalho Tomcat, copiar wars e modificar pastas "deploy_novo" | |
for f in $ARQUIVOS_BASE | |
do | |
filename=$(basename "$f") | |
filename_no_extension=${filename%.*} | |
#Remove o projeto da pasta Catalina do Tomcat | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - rm -Rf $TOMCAT_HOME/work/Catalina/localhost/$filename_no_extension" >> $LOG_FILE | |
rm -Rf $TOMCAT_HOME/work/Catalina/localhost/$filename_no_extension | |
#Remove o projeto da pasta webapps do Tomcat | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - rm -Rf $TOMCAT_HOME/webapps/$filename_no_extension" >> $LOG_FILE | |
rm -Rf $TOMCAT_HOME/webapps/$filename_no_extension | |
#Copia o arquivo da pasta "deploy_novo" para a webapps do Tomcat | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - cp -rf $f $TOMCAT_HOME/webapps" >> $LOG_FILE | |
cp -rf "$f" $TOMCAT_HOME/webapps | |
#Move o arquivo da iteracao para a pasta de executados | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - Movendo o arquivo $filename para a pasta $PASTA_EXECUTADOS" >> $LOG_FILE | |
mv "$f" $PASTA_EXECUTADOS"/"$(date '+%d%m%Y_%H%M%S')"$filename" | |
#Este trecho eh para garantir que nao fique algum arquivo na pasta | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - Verificando se o arquivo $f foi removido da pasta $PASTA_ORIGEM" >> $LOG_FILE | |
#Limpa a pasta de origem do war | |
rm -rf "$f" | |
done | |
##### Fase 4: Iniciar servidor | |
echo $(date '+%d/%m/%Y %H:%M:%S')" - $TOMCAT_HOME/bin/./startup.sh" >> $LOG_FILE | |
$TOMCAT_HOME/bin/./startup.sh | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment