diff --git a/atualiza_TotalBus.bash b/atualiza_TotalBus.bash index d2129b3..340128c 100755 --- a/atualiza_TotalBus.bash +++ b/atualiza_TotalBus.bash @@ -21,50 +21,53 @@ case $service in 1|VentaBoletosServidor) echo -e " " echo -e "Opção \"1 - VentaBoletosServidor\" foi escolhida..." + echo -e " ^^^^^^^^^^^^^^^^^^^^^^^^^ " sleep 2 echo -e " " echo -e "Listando clientes neste server..." echo -e "-------------------------------------------------" echo -e "$listaclientes" echo -e "-------------------------------------------------" + echo -e " " read -p "COPIE e COLE ou digite qual cliente será atualizado: " cliente echo -e " " portconf=$(cat /dados/$cliente/standalone/configuration/standalone.xml | grep "jboss.socket.binding.port-offset" | cut -d ":" -f 2 | tr -d '}">') portapp=$(expr $portconf + 8080) sleep 1 versaoatual=$(curl -L -s http://$IPPRIV:$portapp/VentaBoletosServidor | grep VBS) - echo -e " " echo -e "A versão atual do VentaBoletosServidor de $cliente é: " echo -e " " echo -e "###############################" echo -e "$versaoatual" echo -e "###############################" echo -e " " - echo -e "Abaixo, informe seu usuario e senha do Jenkins..." + read -p "Informe o NÚMERO da NOVA versão do VentaBoletosServidor: " versaovta echo -e " " + if [ "$versaovta" -ge 6500 ]; then + echo -e "Abaixo, informe seu usuario e senha do Jenkins Totalbus..." + echo -e " " + echo -e " ############################################ " echo -e " https://jenkinstotalbus.rjconsultores.com.br " + echo -e " ############################################ " echo -e " " - read -p "Digite seu USUÁRIO do Jenkins: " userj + read -p "Digite seu USUÁRIO do Jenkins Totalbus: " userj echo -e " " - read -s -p "Digite sua SENHA do Jenkins: " passj + read -s -p "Digite sua SENHA do Jenkins Totalbus: " passj echo -e " " echo -e "Validando usuario e senha..." - echo -e " " validj=$(curl -s -w "%{http_code}" -su "$userj:$passj" -o /dev/null "https://jenkinstotalbus.rjconsultores.com.br" ; echo) - if [[ "$validj" -eq 200 ]]; then - echo "Usuário e senha validado com sucesso!" - elif [[ "$validj" -eq 401 ]]; then - echo -e "Usuário ou senha incorretos." - echo -e "Tente novamente..." - exit 0 - else - echo "Erro ao tentar logar. Código HTTP: $validj" - echo -e "Finalizando script." - exit 1 - fi - echo -e " " - read -p "Informe o NÚMERO da versão do VentaBoletosServidor: " versaovta - echo -e " " + if [[ "$validj" -eq 200 ]]; then + echo "Usuário e senha validado com sucesso!" + elif [[ "$validj" -eq 401 ]]; then + echo -e "Usuário ou senha incorretos." + echo -e "Tente novamente..." + exit 0 + else + echo "Erro ao tentar logar. Código HTTP: $validj" + echo -e "Finalizando script." + exit 1 + fi + echo -e " " sleep 3 listvta=$(curl https://jenkinstotalbus.rjconsultores.com.br/job/SCO%20-%20VentaBoletosServidor/$versaovta/artifact/dist/ -su $userj:$passj | grep -oP '(?<=href=")[^"]+\.war(?=")') if [ -z "$listvta" ]; then @@ -157,7 +160,136 @@ case $service in echo -e " " echo -e "##############F-I-N-A-L-I-Z-A-D-O!!!##################################" exit 0 - + else + echo "A versão digitada foi "$versaovta"..." + echo " " + echo -e "###################" + echo -e "...versão do Maven " + echo -e "###################" + sleep 2 + echo -e " " + echo -e "Abaixo, informe seu usuario e senha do Jenkins VENTA..." + echo -e " ^^^^^^^ ^^^^^ " + echo -e " " + sleep 1 + echo -e "###########################################" + echo -e " https://jenkinsventa.rjconsultores.com.br " + echo -e "###########################################" + echo -e " " + read -p "Digite seu USUÁRIO do Jenkins VENTA: " userj + echo -e " " + read -s -p "Digite sua SENHA do Jenkins VENTA: " passj + echo -e " " + echo -e "Validando usuario e senha..." + validj=$(curl -s -w "%{http_code}" -su "$userj:$passj" -o /dev/null "https://jenkinsventa.rjconsultores.com.br" ; echo) + if [[ "$validj" -eq 200 ]]; then + echo "Usuário e senha validado com sucesso!" + elif [[ "$validj" -eq 401 ]]; then + echo -e "Usuário ou senha incorretos." + echo -e "Tente novamente..." + exit 0 + else + echo "Erro ao tentar logar. Código HTTP: $validj" + echo -e "Finalizando script." + exit 1 + fi + echo -e " " + sleep 1 + echo -e "Baixando VentaBoletosServidor do Maven versão "$versaovta" ..." + echo -e " " + # Codifica os colchetes na URL + JENKINS_API_URL="https://jenkinsventa.rjconsultores.com.br/job/Vendas/job/ServidorVendas/job/Totalbus-Servidor-Build/api/json?tree=builds%5Bnumber,description,displayName%5D" + # Baixa o JSON autenticado + RESPONSE=$(curl -u "$userj:$passj" -s "$JENKINS_API_URL") + [ ! -x "$(which jq)" ] && sudo apt install jq -y # JQ instalado? + # Usa 'test' para buscar displayName que contenha a versão (mais tolerante com aspas extras) + DESCRIPTION=$(echo "$RESPONSE" | jq -r \ + --arg versaovta "$versaovta" \ + '.builds[] | select(.displayName | test($versaovta)) | .description' | head -n1) + if [ -z "$DESCRIPTION" ] || [ "$DESCRIPTION" == "null" ]; then + echo "Versão '$versaovta' não encontrada no Jenkins." + exit 1 + fi + # Extrai a URL do WAR do campo description + WAR_URL=$(echo "$DESCRIPTION" | grep -oP "a href='\K[^']+") + if [ -z "$WAR_URL" ]; then + echo "Link para o WAR não encontrado no campo description." + exit 1 + fi + # Baixa o arquivo + ARQUIVO=$(basename "$WAR_URL") + #echo "Baixando WAR: $ARQUIVO" + curl -u "$userj:$passj" -L -o /tmp/"$ARQUIVO" "$WAR_URL" + echo -e " " + echo -e "***Iniciando backup do "VentaBoletosServidor.war" de " $cliente " ..." + echo -e " " + portconf=$(cat /dados/$cliente/standalone/configuration/standalone.xml | grep "socket-binding-group name" | cut -d ":" -f 2 | tr -d '}">') + portconsole=$(expr $portconf + 9990) + sleep 1 + time=$(date +%d-%m-%Y-%H-%M) + mkdir -p /dados/bkp_VTA/$cliente-$time + bkp=/dados/bkp_VTA/$cliente-$time + export JAVA_HOME=/dados/jdk-11.0.5 + /dados/$cliente/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands="attachment save --operation=/deployment=VentaBoletosServidor.war:read-content() --file=$bkp/VentaBoletosServidor.war" + sleep 1 + echo -e " " + echo -e "Iniciando atualização de "VentaBoletosServidor" do cliente "$cliente" para versão "$versaovta"..." + /dados/$cliente/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands="deployment deploy-file --replace /tmp/VentaBoletosServidor.war" + echo -e " " + sleep 5 + echo -e "reiniciando $cliente ... " + systemctl restart $cliente + echo -e " " + URL="http://$IPPRIV:$portapp" + while true; do + STATUS_CODE=$(curl -o /dev/null -s -w "%{http_code}" "$URL") + if [ "$STATUS_CODE" -eq 200 ]; then + echo -e "--------------------------------------------------" + echo -e "Restart finalizado!!! $cliente NO AR!!!" + echo -e "--------------------------------------------------" + break + else + echo -e "aguardando $cliente subir ..." + fi + sleep 5 + done + echo -e " " + logt=$(date +%d-%m-%Y) + echo -e "Gravando log da atualização em "/dados/$cliente/standalone/log/atualizacao_$logt.log" ..." + feito=$(echo -e $userj | tr a-z A-Z) + versaonova=$(curl -L -s http://$IPPRIV:$portapp/VentaBoletosServidor | grep VBS) + echo -e " " + echo -e "Atualização do cliente "$cliente" para versão "$versaonova" concluída!!! " + echo -e " " + echo -e " + ---------------------------------------------------------------------------------- + - Atualização ***VentaBoletosServidor - MAVEN*** + - Data/Hora: "$time" + - Atualizando cliente: "$cliente" + - Versão antiga: "$versaoatual" + - Versão NOVA: *** "$versaonova" - MAVEN *** + - Arquivo baixado: "$vtaescolhido" + - Backup salvo em "$bkp/VentaBoletosServidor.war" + - Endereço: $URL/VentaBoletosServidor + - Console: http://$IPPRIV:$portconsole + - Feito por: "$feito" + ################################################################################## + #- Em caso de Rollback execute o comando abaixo: + export JAVA_HOME=/dados/jdk-11.0.5 && /dados/$cliente/bin/jboss-cli.sh --user=admin --password=rjmaster09 --connect controller=localhost:$portconsole --commands=\"deployment deploy-file --replace $bkp/VentaBoletosServidor.war\" + ################################################################################## + ----------------------------------------------------------------------------------" >> /dados/$cliente/standalone/log/atualizacao_$logt.log + echo -e "- Versão antiga: "$versaoatual"" + echo -e " " + echo -e "- Nova Versão: "$versaonova"" + echo -e " " + echo -e "- Endereço: $URL/VentaBoletosServidor" + echo -e " " + echo -e "- Console: http://$IPPRIV:$portconsole" + echo -e " " + echo -e "##############F-I-N-A-L-I-Z-A-D-O!!!##################################" + fi + exit 0 + ;; 2|EventosExtrasServidor)