134 lines
4.3 KiB
Bash
134 lines
4.3 KiB
Bash
#!/bin/bash
|
|
# ============================================================================
|
|
# Script de Deploy - Avanzato
|
|
# ============================================================================
|
|
# Uso: bash scripts/deploy.sh [ambiente]
|
|
#
|
|
# Ambientes:
|
|
# production (padrao) - Deploy para producao
|
|
# staging - Deploy para staging
|
|
#
|
|
# EXEMPLO:
|
|
# bash scripts/deploy.sh production
|
|
# bash scripts/deploy.sh staging
|
|
# ============================================================================
|
|
|
|
set -e
|
|
|
|
# Cores
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Diretorios
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
DIST_DIR="${PROJECT_DIR}/dist"
|
|
|
|
# Ambiente
|
|
ENVIRONMENT="${1:-production}"
|
|
|
|
# Configuracoes (EDITAR ESTAS VARIAVEIS)
|
|
# ============================================
|
|
SSH_HOST="${SSH_HOST:-SEU_SERVIDOR_AQUI}" # Ex: 201.45.120.30
|
|
SSH_USER="${SSH_USER:-root}" # Ex: root
|
|
SSH_PORT="${SSH_PORT:-22}"
|
|
DEPLOY_PATH="${DEPLOY_PATH:-/var/www/avanzato}" # Caminho no servidor
|
|
# ============================================
|
|
|
|
echo "=========================================="
|
|
echo -e " ${BLUE}Avanzato - Deploy${NC}"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo -e "Ambiente: ${YELLOW}${ENVIRONMENT}${NC}"
|
|
echo ""
|
|
|
|
# Verificar se o dist existe
|
|
if [ ! -d "$DIST_DIR" ]; then
|
|
echo -e "${RED}Erro: Pasta dist/ nao encontrada!${NC}"
|
|
echo "Execute primeiro: npm run build"
|
|
exit 1
|
|
fi
|
|
|
|
# Verificar se o diretorio do projeto existe no servidor
|
|
echo -e "${BLUE}[1/6]${NC} Verificando conexao com servidor..."
|
|
if ! ssh -p "$SSH_PORT" -o ConnectTimeout=10 "${SSH_USER}@${SSH_HOST}" "echo 'Conectado!'" 2>/dev/null; then
|
|
echo -e "${RED}Erro: Nao foi possivel conectar ao servidor.${NC}"
|
|
echo ""
|
|
echo "Verifique:"
|
|
echo " 1. Se o SSH_HOST esta correto"
|
|
echo " 2. Se a chave SSH esta configurada"
|
|
echo " 3. Se o servidor esta online"
|
|
echo ""
|
|
echo "Para configurar SSH:"
|
|
echo " ssh-copy-id -i ~/.ssh/id_ed25519.pub ${SSH_USER}@${SSH_HOST}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}OK${NC} - Servidor acessivel"
|
|
echo ""
|
|
|
|
# Preservar assets customizados
|
|
echo -e "${BLUE}[2/6]${NC} Preservando assets customizados..."
|
|
if [ -d "${PROJECT_DIR}/custom-assets" ]; then
|
|
bash "${SCRIPT_DIR}/preserve-assets.sh" "$DIST_DIR"
|
|
else
|
|
echo -e "${YELLOW}Nenhum asset customizado encontrado.${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# Configurar robots.txt e anti-indexacao conforme ambiente
|
|
echo -e "${BLUE}[3/6]${NC} Configurando anti-indexacao para ambiente: ${ENVIRONMENT}..."
|
|
if [ "$ENVIRONMENT" == "production" ]; then
|
|
# Producao: permitir indexacao
|
|
cp "${PROJECT_DIR}/public/robots-producao.txt" "${DIST_DIR}/robots.txt"
|
|
echo -e "${GREEN}OK${NC} - robots.txt configurado para PRODUCAO (allow)"
|
|
else
|
|
# Homolog/Staging: bloquear indexacao
|
|
cp "${PROJECT_DIR}/public/robots.txt" "${DIST_DIR}/robots.txt"
|
|
echo -e "${YELLOW}ATENCAO${NC} - robots.txt configurado para HOMOLOGACAO (disallow all)"
|
|
fi
|
|
echo ""
|
|
|
|
# Fazer backup do site atual (opcional)
|
|
echo -e "${BLUE}[4/6]${NC} Criando backup..."
|
|
BACKUP_DIR="backup-$(date +%Y%m%d-%H%M%S)"
|
|
ssh -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "
|
|
if [ -d '${DEPLOY_PATH}' ]; then
|
|
mkdir -p '${DEPLOY_PATH}/backups'
|
|
cp -r '${DEPLOY_PATH}' '${DEPLOY_PATH}/backups/${BACKUP_DIR}' 2>/dev/null || true
|
|
echo 'Backup criado: backups/${BACKUP_DIR}'
|
|
fi
|
|
" 2>/dev/null || echo -e "${YELLOW}Backup ignorado (primeiro deploy).${NC}"
|
|
echo ""
|
|
|
|
# Deploy via rsync
|
|
echo -e "${BLUE}[5/6]${NC} Enviando arquivos para servidor..."
|
|
rsync -avz --delete \
|
|
-e "ssh -p ${SSH_PORT}" \
|
|
--exclude='backups' \
|
|
"$DIST_DIR/" \
|
|
"${SSH_USER}@${SSH_HOST}:${DEPLOY_PATH}/"
|
|
|
|
echo ""
|
|
echo -e "${GREEN}OK${NC} - Arquivos enviados!"
|
|
echo ""
|
|
|
|
# Limpar cache (se necessario)
|
|
echo -e "${BLUE}[6/6]${NC} Finalizando..."
|
|
# Aqui voce pode adicionar comandos especificos do servidor
|
|
# ssh -p "$SSH_PORT" "${SSH_USER}@${SSH_HOST}" "sudo systemctl restart nginx" 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo -e "${GREEN}Deploy concluido com sucesso!${NC}"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo -e "Ambiente: ${YELLOW}${ENVIRONMENT}${NC}"
|
|
echo -e "Servidor: ${SSH_USER}@${SSH_HOST}:${DEPLOY_PATH}"
|
|
echo ""
|
|
echo "Verifique o site:"
|
|
echo " https://avanzato.com.br"
|
|
echo ""
|