Versão inicial do site Avanzato
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
# Setup do Ambiente CI/CD - Avanzato
|
||||
|
||||
## Arquitetura
|
||||
|
||||
```
|
||||
+------------------------------------------------------------------+
|
||||
| SEU SERVIDOR |
|
||||
| |
|
||||
| +-------------------+ +-------------------+ +-----------+ |
|
||||
| | Git Bare Repo | | Pipeline | | Site | |
|
||||
| | /var/git/site |--->| /var/ci/ |--->| Nginx | |
|
||||
| | | | | | | |
|
||||
| | - hooks/post-receive | - build.sh | | /var/www | |
|
||||
| | - hooks/pre-receive | - deploy.sh | | | |
|
||||
| +-------------------+ +-------------------+ +-----------+ |
|
||||
| ^ | |
|
||||
| | v |
|
||||
| +-------------------+ +-------------------+ |
|
||||
| | Seu Computador | | Mautic | |
|
||||
| | | | mkt.avanzato | |
|
||||
| | git push | | | |
|
||||
| +-------------------+ +-------------------+ |
|
||||
+------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
## 1. Instalar dependencias no servidor
|
||||
|
||||
```bash
|
||||
# Atualizar sistema
|
||||
apt update && apt upgrade -y
|
||||
|
||||
# Instalar Git
|
||||
apt install -y git curl
|
||||
|
||||
# Instalar Node.js 20
|
||||
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
||||
apt install -y nodejs
|
||||
|
||||
# Verificar
|
||||
node -v # v20.x.x
|
||||
npm -v # 10.x.x
|
||||
|
||||
# Instalar Nginx
|
||||
apt install -y nginx
|
||||
|
||||
# Instalar PM2 (opcional, para gerenciar processos)
|
||||
npm install -g pm2
|
||||
```
|
||||
|
||||
## 2. Criar usuario de deploy
|
||||
|
||||
```bash
|
||||
# Criar usuario dedicado
|
||||
useradd -m -s /bin/bash deploy
|
||||
|
||||
# Adicionar ao grupo www-data
|
||||
usermod -aG www-data deploy
|
||||
|
||||
# Criar chave SSH (como usuario deploy)
|
||||
su - deploy
|
||||
ssh-keygen -t ed25519 -C "deploy" -f ~/.ssh/id_ed25519 -N ""
|
||||
|
||||
# Ver chave publica (para autorizar pushes)
|
||||
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
## 3. Criar repositorio Git bare
|
||||
|
||||
```bash
|
||||
# Criar pasta
|
||||
mkdir -p /var/git/site.git
|
||||
cd /var/git/site.git
|
||||
git init --bare
|
||||
|
||||
# Permissoes
|
||||
chown -R deploy:deploy /var/git/site.git
|
||||
chmod -R 755 /var/git/site.git
|
||||
```
|
||||
|
||||
## 4. Configurar hooks Git
|
||||
|
||||
```bash
|
||||
# Copiar hooks
|
||||
sudo su - deploy
|
||||
cp /var/ci/hooks/post-receive /var/git/site.git/hooks/post-receive
|
||||
chmod +x /var/git/site.git/hooks/post-receive
|
||||
```
|
||||
|
||||
## 5. Configurar Nginx
|
||||
|
||||
```bash
|
||||
# Criar config
|
||||
nano /etc/nginx/sites-available/avanzato
|
||||
|
||||
# Ver link: CI/CD > nginx-config.conf
|
||||
|
||||
# Ativar
|
||||
ln -s /etc/nginx/sites-available/avanzato /etc/nginx/sites-enabled/
|
||||
nginx -t
|
||||
systemctl reload nginx
|
||||
|
||||
# SSL com Let's Encrypt
|
||||
certbot --nginx -d avanzato.com.br -d www.avanzato.com.br
|
||||
```
|
||||
|
||||
## 6. Criar estrutura de pastas
|
||||
|
||||
```bash
|
||||
mkdir -p /var/www/avanzato # Site em producao
|
||||
mkdir -p /var/www/avanzato-staging # Site em staging (opcional)
|
||||
mkdir -p /var/ci # Pipeline scripts
|
||||
mkdir -p /var/ci/logs # Logs de build/deploy
|
||||
mkdir -p /var/ci/backups # Backups automaticos
|
||||
mkdir -p /var/ci/assets # Assets preservados
|
||||
chown -R deploy:www-data /var/www
|
||||
chmod -R 755 /var/www
|
||||
```
|
||||
|
||||
## 7. Configurar pipeline
|
||||
|
||||
```bash
|
||||
# Copiar scripts do pipeline
|
||||
cp /var/ci/scripts/* /var/ci/
|
||||
chmod +x /var/ci/*.sh
|
||||
|
||||
# Configurar variaveis
|
||||
nano /var/ci/config.env
|
||||
|
||||
# Conteudo:
|
||||
DEPLOY_PATH=/var/www/avanzato
|
||||
STAGING_PATH=/var/www/avanzato-staging
|
||||
BACKUP_PATH=/var/ci/backups
|
||||
LOG_PATH=/var/ci/logs
|
||||
MAUTIC_URL=https://mkt.avanzato.com.br
|
||||
```
|
||||
|
||||
## 8. Configurar seu computador local
|
||||
|
||||
```bash
|
||||
# Adicionar remote no seu projeto local
|
||||
cd /caminho/do/projeto/avanzato-site
|
||||
git remote add servidor ssh://deploy@SEU_SERVIDOR/var/git/site.git
|
||||
|
||||
# Testar conexao
|
||||
ssh deploy@SEU_SERVIDOR "echo 'Conectado!'"
|
||||
|
||||
# Push inicial
|
||||
git push servidor main
|
||||
```
|
||||
|
||||
## Comandos de uso diario
|
||||
|
||||
| Comando | Resultado |
|
||||
|---------|-----------|
|
||||
| `git push servidor main` | Deploy automatico para producao |
|
||||
| `git push servidor staging` | Deploy para staging |
|
||||
| `ssh deploy@SERVIDOR "cat /var/ci/logs/last-deploy.log"` | Ver ultimo log |
|
||||
| `ssh deploy@SERVIDOR "ls /var/ci/backups"` | Listar backups |
|
||||
|
||||
## Estrutura final no servidor
|
||||
|
||||
```
|
||||
/var/
|
||||
git/
|
||||
site.git/ # Repo bare (recebe pushes)
|
||||
hooks/
|
||||
post-receive # Hook de deploy automatico
|
||||
ci/
|
||||
scripts/
|
||||
build.sh # Compila o site
|
||||
deploy.sh # Envia para producao
|
||||
preserve-assets.sh # Preserva logo/imagens
|
||||
backup.sh # Cria backup
|
||||
hooks/
|
||||
post-receive # Template do hook
|
||||
logs/ # Logs de execucao
|
||||
backups/ # Backups automaticos
|
||||
assets/ # Assets preservados
|
||||
config.env # Variaveis de ambiente
|
||||
www/
|
||||
avanzato/ # Site em producao
|
||||
index.html
|
||||
assets/
|
||||
backups/ # Backups antigos
|
||||
```
|
||||
@@ -0,0 +1,57 @@
|
||||
# ============================================================================
|
||||
# Configuracao do Pipeline CI/CD - Avanzato
|
||||
# ============================================================================
|
||||
# Edite estas variaveis conforme seu ambiente.
|
||||
# ============================================================================
|
||||
|
||||
# --- CAMINHOS ---
|
||||
|
||||
# Caminho onde o site fica em producao
|
||||
DEPLOY_PATH=/var/www/avanzato
|
||||
|
||||
# Caminho do site em staging (opcional)
|
||||
STAGING_PATH=/var/www/avanzato-staging
|
||||
|
||||
# Caminho para backups
|
||||
BACKUP_PATH=/var/ci/backups
|
||||
|
||||
# Caminho para logs
|
||||
LOG_PATH=/var/ci/logs
|
||||
|
||||
# Caminho para assets preservados (logo, imagens)
|
||||
ASSETS_PATH=/var/ci/assets
|
||||
|
||||
# --- SERVIDOR ---
|
||||
|
||||
# URL do site
|
||||
SITE_URL=https://avanzato.com.br
|
||||
|
||||
# URL do site em staging
|
||||
STAGING_URL=https://staging.avanzato.com.br
|
||||
|
||||
# --- INTEGRACOES ---
|
||||
|
||||
# URL do Mautic
|
||||
MAUTIC_URL=https://mkt.avanzato.com.br
|
||||
|
||||
# URL do EspoCRM
|
||||
ESPOCRM_URL=https://crm.avanzato.com.br
|
||||
|
||||
# Chave API do Brevo (opcional)
|
||||
BREVO_API_KEY=
|
||||
|
||||
# Google Ads ID
|
||||
GOOGLE_ADS_ID=AW-16714813566
|
||||
|
||||
# --- E-MAIL ---
|
||||
|
||||
# E-mail para notificacoes
|
||||
NOTIFY_EMAIL=leads@avanzato.com.br
|
||||
|
||||
# --- CONFIGURACOES ---
|
||||
|
||||
# Numero de backups a manter
|
||||
MAX_BACKUPS=10
|
||||
|
||||
# Timeout do build (segundos)
|
||||
BUILD_TIMEOUT=300
|
||||
@@ -0,0 +1,240 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Git Hook: post-receive
|
||||
# ============================================================================
|
||||
# Este hook executa automaticamente apos cada git push.
|
||||
# Ele faz build e deploy do site sem intervencao manual.
|
||||
#
|
||||
# Instalacao:
|
||||
# cp ci/hooks/post-receive /var/git/site.git/hooks/
|
||||
# chmod +x /var/git/site.git/hooks/post-receive
|
||||
# ============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Cores
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Configuracoes
|
||||
REPO_DIR="$(pwd)"
|
||||
DEPLOY_DIR="/var/tmp/site-deploy-$(date +%s)"
|
||||
CI_DIR="/var/ci"
|
||||
LOG_FILE="/var/ci/logs/deploy-$(date +%Y%m%d-%H%M%S).log"
|
||||
LAST_LOG="/var/ci/logs/last-deploy.log"
|
||||
CONFIG_FILE="/var/ci/config.env"
|
||||
|
||||
# Criar pasta de logs
|
||||
mkdir -p "$(dirname "$LOG_FILE")"
|
||||
|
||||
# Funcao de log
|
||||
log() {
|
||||
echo -e "$1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
# Redirect output to log
|
||||
exec > >(tee -a "$LOG_FILE")
|
||||
exec 2>&1
|
||||
|
||||
log "${BLUE}============================================================${NC}"
|
||||
log "${BLUE} Avanzato CI/CD - Deploy Automatico${NC}"
|
||||
log "${BLUE}============================================================${NC}"
|
||||
log ""
|
||||
log "Data: $(date)"
|
||||
log "Branch recebida: $1"
|
||||
log "Commit: $2"
|
||||
log ""
|
||||
|
||||
# Carregar configuracoes
|
||||
if [ -f "$CONFIG_FILE" ]; then
|
||||
source "$CONFIG_FILE"
|
||||
log "${GREEN}[OK]${NC} Configuracoes carregadas."
|
||||
else
|
||||
log "${YELLOW}[AVISO]${NC} Arquivo config.env nao encontrado. Usando defaults."
|
||||
DEPLOY_PATH="/var/www/avanzato"
|
||||
STAGING_PATH="/var/www/avanzato-staging"
|
||||
BACKUP_PATH="/var/ci/backups"
|
||||
fi
|
||||
|
||||
# Detectar branch
|
||||
while read oldrev newrev refname; do
|
||||
BRANCH=$(git rev-parse --symbolic --abbrev-ref "$refname")
|
||||
log "Processando branch: ${YELLOW}${BRANCH}${NC}"
|
||||
|
||||
case "$BRANCH" in
|
||||
main|master)
|
||||
TARGET="production"
|
||||
DEPLOY_TARGET="$DEPLOY_PATH"
|
||||
;;
|
||||
staging)
|
||||
TARGET="staging"
|
||||
DEPLOY_TARGET="$STAGING_PATH"
|
||||
;;
|
||||
*)
|
||||
log "${YELLOW}[IGNORADO]${NC} Branch '${BRANCH}' nao configurada para deploy."
|
||||
log "Branches validas: main, master, staging"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
log ""
|
||||
log "${BLUE}------------------------------------------------------------${NC}"
|
||||
log "Ambiente: ${YELLOW}${TARGET}${NC}"
|
||||
log "Destino: ${DEPLOY_TARGET}"
|
||||
log "${BLUE}------------------------------------------------------------${NC}"
|
||||
log ""
|
||||
|
||||
# ==========================================================================
|
||||
# PASSO 1: Checkout do codigo
|
||||
# ==========================================================================
|
||||
log "${BLUE}[1/6]${NC} Checkout do codigo..."
|
||||
mkdir -p "$DEPLOY_DIR"
|
||||
git --git-dir="$REPO_DIR" --work-tree="$DEPLOY_DIR" checkout -f "$BRANCH" 2>&1
|
||||
log "${GREEN}[OK]${NC} Codigo extraido para ${DEPLOY_DIR}"
|
||||
log ""
|
||||
|
||||
# ==========================================================================
|
||||
# PASSO 2: Instalar dependencias
|
||||
# ==========================================================================
|
||||
log "${BLUE}[2/6]${NC} Instalando dependencias..."
|
||||
cd "$DEPLOY_DIR"
|
||||
if [ -f "package.json" ]; then
|
||||
npm ci --silent 2>&1 || {
|
||||
log "${RED}[ERRO]${NC} Falha ao instalar dependencias."
|
||||
exit 1
|
||||
}
|
||||
log "${GREEN}[OK]${NC} Dependencias instaladas."
|
||||
else
|
||||
log "${YELLOW}[AVISO]${NC} package.json nao encontrado. Pulando."
|
||||
fi
|
||||
log ""
|
||||
|
||||
# ==========================================================================
|
||||
# PASSO 3: Build
|
||||
# ==========================================================================
|
||||
log "${BLUE}[3/6]${NC} Executando build..."
|
||||
cd "$DEPLOY_DIR"
|
||||
if [ -f "package.json" ]; then
|
||||
npm run build 2>&1 || {
|
||||
log "${RED}[ERRO]${NC} Falha no build."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Verificar se a pasta dist foi criada
|
||||
if [ ! -d "dist" ]; then
|
||||
log "${RED}[ERRO]${NC} Pasta dist/ nao encontrada apos build."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log "${GREEN}[OK]${NC} Build concluido com sucesso."
|
||||
log "Tamanho: $(du -sh dist/ | cut -f1)"
|
||||
else
|
||||
# Se nao tem package.json, usar o proprio diretorio
|
||||
log "${YELLOW}[AVISO]${NC} Projeto estatico detectado. Usando arquivos diretamente."
|
||||
fi
|
||||
log ""
|
||||
|
||||
# ==========================================================================
|
||||
# PASSO 4: Preservar assets
|
||||
# ==========================================================================
|
||||
log "${BLUE}[4/6]${NC} Preservando assets customizados..."
|
||||
cd "$DEPLOY_DIR"
|
||||
|
||||
# Se existir pasta custom-assets, preservar
|
||||
if [ -d "custom-assets" ]; then
|
||||
log "Assets customizados encontrados. Preservando..."
|
||||
bash "${DEPLOY_DIR}/scripts/preserve-assets.sh" "${DEPLOY_DIR}/dist" 2>&1 || {
|
||||
log "${YELLOW}[AVISO]${NC} Erro ao preservar assets (nao critico)."
|
||||
}
|
||||
else
|
||||
log "${YELLOW}[AVISO]${NC} Nenhum asset customizado encontrado."
|
||||
fi
|
||||
|
||||
# Se existem assets preservados no /var/ci/assets, copiar
|
||||
if [ -d "/var/ci/assets" ] && [ "$(ls -A /var/ci/assets)" ]; then
|
||||
log "Copiando assets preservados..."
|
||||
cp -r /var/ci/assets/* "${DEPLOY_DIR}/dist/" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
log "${GREEN}[OK]${NC} Assets processados."
|
||||
log ""
|
||||
|
||||
# ==========================================================================
|
||||
# PASSO 5: Backup do site atual
|
||||
# ==========================================================================
|
||||
log "${BLUE}[5/6]${NC} Criando backup..."
|
||||
if [ -d "$DEPLOY_TARGET" ] && [ "$(ls -A "$DEPLOY_TARGET" 2>/dev/null)" ]; then
|
||||
BACKUP_NAME="backup-$(date +%Y%m%d-%H%M%S)"
|
||||
mkdir -p "$BACKUP_PATH"
|
||||
|
||||
# Criar backup (excluindo backups antigos para nao duplicar)
|
||||
tar -czf "${BACKUP_PATH}/${BACKUP_NAME}.tar.gz" \
|
||||
-C "$(dirname "$DEPLOY_TARGET")" \
|
||||
--exclude="backups" \
|
||||
"$(basename "$DEPLOY_TARGET")" 2>/dev/null || true
|
||||
|
||||
# Limpar backups antigos (manter 10)
|
||||
ls -t "${BACKUP_PATH}"/*.tar.gz 2>/dev/null | tail -n +11 | xargs -r rm -f
|
||||
|
||||
log "${GREEN}[OK]${NC} Backup criado: ${BACKUP_NAME}.tar.gz"
|
||||
else
|
||||
log "${YELLOW}[AVISO]${NC} Nada para fazer backup (primeiro deploy)."
|
||||
fi
|
||||
log ""
|
||||
|
||||
# ==========================================================================
|
||||
# PASSO 6: Deploy
|
||||
# ==========================================================================
|
||||
log "${BLUE}[6/6]${NC} Fazendo deploy..."
|
||||
|
||||
# Criar diretorio se nao existir
|
||||
mkdir -p "$DEPLOY_TARGET"
|
||||
|
||||
# Limpar conteudo antigo (exceto backups)
|
||||
find "$DEPLOY_TARGET" -mindepth 1 -not -path "${DEPLOY_TARGET}/backups/*" -not -name "backups" -delete 2>/dev/null || rm -rf "${DEPLOY_TARGET:?}"/*
|
||||
|
||||
# Copiar novos arquivos
|
||||
if [ -d "${DEPLOY_DIR}/dist" ]; then
|
||||
cp -r "${DEPLOY_DIR}/dist/"* "$DEPLOY_TARGET/"
|
||||
else
|
||||
# Se nao tem dist, copiar tudo
|
||||
cp -r "${DEPLOY_DIR}/"* "$DEPLOY_TARGET/"
|
||||
fi
|
||||
|
||||
# Permissoes
|
||||
chown -R www-data:www-data "$DEPLOY_TARGET"
|
||||
chmod -R 755 "$DEPLOY_TARGET"
|
||||
|
||||
# Limpar pasta temporaria
|
||||
rm -rf "$DEPLOY_DIR"
|
||||
|
||||
log "${GREEN}[OK]${NC} Deploy concluido!"
|
||||
log ""
|
||||
|
||||
# ==========================================================================
|
||||
# FINAL
|
||||
# ==========================================================================
|
||||
log "${BLUE}============================================================${NC}"
|
||||
log "${GREEN} Deploy concluido com sucesso!${NC}"
|
||||
log "${BLUE}============================================================${NC}"
|
||||
log ""
|
||||
log "Ambiente: ${TARGET}"
|
||||
log "Caminho: ${DEPLOY_TARGET}"
|
||||
log "Backup: ${BACKUP_PATH}"
|
||||
log "Log: ${LOG_FILE}"
|
||||
log "Data: $(date)"
|
||||
log ""
|
||||
|
||||
# Atualizar link do ultimo log
|
||||
ln -sf "$LOG_FILE" "$LAST_LOG"
|
||||
|
||||
# Notificar via webhook (opcional)
|
||||
# curl -X POST "https://hooks.slack.com/services/..." \
|
||||
# -H 'Content-Type: application/json' \
|
||||
# -d "{\"text\":\"Deploy ${TARGET} concluido!\"}" 2>/dev/null || true
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Git Hook: pre-receive
|
||||
# ============================================================================
|
||||
# Executado ANTES do push ser aceito.
|
||||
# Pode bloquear pushes que nao atendem criterios.
|
||||
# ============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Rejeitar pushes diretos na main (forcar via PR)
|
||||
# Descomente se quiser forcar code review:
|
||||
# while read oldrev newrev refname; do
|
||||
# BRANCH=$(git rev-parse --symbolic --abbrev-ref "$refname")
|
||||
# if [ "$BRANCH" = "main" ] || [ "$BRANCH" = "master" ]; then
|
||||
# echo "Push direto na main bloqueado. Use pull request."
|
||||
# exit 1
|
||||
# fi
|
||||
# done
|
||||
|
||||
# Aceitar todos os pushes por padrao
|
||||
exit 0
|
||||
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Script de Backup - Avanzato
|
||||
# ============================================================================
|
||||
# Uso: bash ci/scripts/backup.sh [ambiente]
|
||||
#
|
||||
# Faz backup manual do site.
|
||||
# ============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Carregar config
|
||||
CONFIG_FILE="/var/ci/config.env"
|
||||
if [ -f "$CONFIG_FILE" ]; then
|
||||
source "$CONFIG_FILE"
|
||||
fi
|
||||
|
||||
DEPLOY_PATH="${DEPLOY_PATH:-/var/www/avanzato}"
|
||||
BACKUP_PATH="${BACKUP_PATH:-/var/ci/backups}"
|
||||
AMBIENTE="${1:-production}"
|
||||
|
||||
# Determinar diretorio
|
||||
if [ "$AMBIENTE" = "staging" ]; then
|
||||
DEPLOY_PATH="${STAGING_PATH:-$DEPLOY_PATH-staging}"
|
||||
fi
|
||||
|
||||
BACKUP_NAME="backup-$(date +%Y%m%d-%H%M%S)"
|
||||
|
||||
mkdir -p "$BACKUP_PATH"
|
||||
|
||||
if [ ! -d "$DEPLOY_PATH" ] || [ ! "$(ls -A "$DEPLOY_PATH" 2>/dev/null)" ]; then
|
||||
echo -e "${RED}Nada para fazer backup.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}Criando backup...${NC}"
|
||||
echo "Origem: $DEPLOY_PATH"
|
||||
echo "Destino: $BACKUP_PATH/${BACKUP_NAME}.tar.gz"
|
||||
|
||||
tar -czf "${BACKUP_PATH}/${BACKUP_NAME}.tar.gz" \
|
||||
-C "$(dirname "$DEPLOY_PATH")" \
|
||||
--exclude="backups" \
|
||||
"$(basename "$DEPLOY_PATH")"
|
||||
|
||||
echo -e "${GREEN}Backup criado: ${BACKUP_NAME}.tar.gz${NC}"
|
||||
|
||||
# Limpar backups antigos
|
||||
MAX_BACKUPS="${MAX_BACKUPS:-10}"
|
||||
echo "Limpando backups antigos (manter $MAX_BACKUPS)..."
|
||||
ls -t "${BACKUP_PATH}"/*.tar.gz 2>/dev/null | tail -n +$((MAX_BACKUPS + 1)) | xargs -r rm -f
|
||||
echo -e "${GREEN}Concluido!${NC}"
|
||||
@@ -0,0 +1,86 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Script de Rollback - Avanzato
|
||||
# ============================================================================
|
||||
# Uso: bash ci/scripts/rollback.sh [numero]
|
||||
#
|
||||
# Restaura um backup anterior.
|
||||
# ============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
CONFIG_FILE="/var/ci/config.env"
|
||||
if [ -f "$CONFIG_FILE" ]; then
|
||||
source "$CONFIG_FILE"
|
||||
fi
|
||||
|
||||
DEPLOY_PATH="${DEPLOY_PATH:-/var/www/avanzato}"
|
||||
BACKUP_PATH="${BACKUP_PATH:-/var/ci/backups}"
|
||||
AMBIENTE="${1:-production}"
|
||||
|
||||
if [ "$AMBIENTE" = "staging" ]; then
|
||||
DEPLOY_PATH="${STAGING_PATH:-$DEPLOY_PATH-staging}"
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}============================================================${NC}"
|
||||
echo -e "${BLUE} Avanzato - Rollback${NC}"
|
||||
echo -e "${BLUE}============================================================${NC}"
|
||||
echo ""
|
||||
|
||||
# Listar backups disponiveis
|
||||
echo "Backups disponiveis:"
|
||||
echo ""
|
||||
|
||||
BACKUPS=()
|
||||
i=1
|
||||
for backup in $(ls -t "${BACKUP_PATH}"/*.tar.gz 2>/dev/null); do
|
||||
nome=$(basename "$backup")
|
||||
tamanho=$(du -h "$backup" | cut -f1)
|
||||
data=$(stat -c %y "$backup" | cut -d'.' -f1)
|
||||
printf " ${GREEN}%2d.${NC} %s (${tamanho}) %s\n" "$i" "$nome" "$data"
|
||||
BACKUPS+=("$backup")
|
||||
i=$((i + 1))
|
||||
done
|
||||
|
||||
if [ ${#BACKUPS[@]} -eq 0 ]; then
|
||||
echo -e "${RED}Nenhum backup encontrado.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
read -p "Digite o numero do backup para restaurar: " NUM
|
||||
|
||||
if ! [[ "$NUM" =~ ^[0-9]+$ ]] || [ "$NUM" -lt 1 ] || [ "$NUM" -gt ${#BACKUPS[@]} ]; then
|
||||
echo -e "${RED}Numero invalido.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP="${BACKUPS[$((NUM - 1))]}"
|
||||
echo ""
|
||||
echo -e "Selecionado: ${YELLOW}$(basename "$BACKUP")${NC}"
|
||||
echo "Destino: $DEPLOY_PATH"
|
||||
read -p "Confirma? (s/N): " CONFIRM
|
||||
|
||||
if [ "$CONFIRM" != "s" ] && [ "$CONFIRM" != "S" ]; then
|
||||
echo "Cancelado."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${YELLOW}Fazendo backup do estado atual antes do rollback...${NC}"
|
||||
bash "$(dirname "$0")/backup.sh" "$AMBIENTE"
|
||||
|
||||
echo ""
|
||||
echo -e "${YELLOW}Restaurando backup...${NC}"
|
||||
rm -rf "${DEPLOY_PATH:?}"/*
|
||||
tar -xzf "$BACKUP" -C "$(dirname "$DEPLOY_PATH")" --strip-components=1
|
||||
|
||||
echo -e "${GREEN}Rollback concluido!${NC}"
|
||||
echo ""
|
||||
echo "Verifique: ${DEPLOY_PATH}"
|
||||
@@ -0,0 +1,75 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Script de Status - Avanzato
|
||||
# ============================================================================
|
||||
# Uso: bash ci/scripts/status.sh
|
||||
#
|
||||
# Mostra status do site, ultimos deploys e backups.
|
||||
# ============================================================================
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
CONFIG_FILE="/var/ci/config.env"
|
||||
if [ -f "$CONFIG_FILE" ]; then
|
||||
source "$CONFIG_FILE"
|
||||
fi
|
||||
|
||||
DEPLOY_PATH="${DEPLOY_PATH:-/var/www/avanzato}"
|
||||
BACKUP_PATH="${BACKUP_PATH:-/var/ci/backups}"
|
||||
LOG_PATH="${LOG_PATH:-/var/ci/logs}"
|
||||
|
||||
echo -e "${BLUE}============================================================${NC}"
|
||||
echo -e "${BLUE} Avanzato - Status do Ambiente${NC}"
|
||||
echo -e "${BLUE}============================================================${NC}"
|
||||
echo ""
|
||||
|
||||
# Status do site
|
||||
echo -e "${GREEN}SITUACAO DO SITE${NC}"
|
||||
echo " URL: ${SITE_URL:-https://avanzato.com.br}"
|
||||
echo " Caminho: $DEPLOY_PATH"
|
||||
echo " Tamanho: $(du -sh "$DEPLOY_PATH" 2>/dev/null | cut -f1 || echo 'N/A')"
|
||||
echo ""
|
||||
|
||||
# Status do Nginx
|
||||
echo -e "${GREEN}NGINX${NC}"
|
||||
systemctl is-active nginx 2>/dev/null && \
|
||||
echo -e " Status: ${GREEN}Ativo${NC}" || \
|
||||
echo -e " Status: ${RED}Inativo${NC}"
|
||||
echo ""
|
||||
|
||||
# Ultimo deploy
|
||||
echo -e "${GREEN}ULTIMOS DEPLOYS${NC}"
|
||||
if [ -f "${LOG_PATH}/last-deploy.log" ]; then
|
||||
echo " Log: ${LOG_PATH}/last-deploy.log"
|
||||
echo " Data: $(stat -c %y "${LOG_PATH}/last-deploy.log" | cut -d'.' -f1)"
|
||||
else
|
||||
echo -e " ${YELLOW}Nenhum deploy registrado.${NC}"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Backups
|
||||
echo -e "${GREEN}BACKUPS${NC}"
|
||||
echo " Caminho: $BACKUP_PATH"
|
||||
echo " Quantidade: $(ls "${BACKUP_PATH}"/*.tar.gz 2>/dev/null | wc -l)"
|
||||
echo " Tamanho total: $(du -sh "$BACKUP_PATH" 2>/dev/null | cut -f1 || echo '0')"
|
||||
echo ""
|
||||
|
||||
# Ultimos logs
|
||||
echo -e "${GREEN}ULTIMOS LOGS${NC}"
|
||||
ls -t "${LOG_PATH}"/*.log 2>/dev/null | head -5 | while read log; do
|
||||
echo " $(basename "$log") - $(stat -c %y "$log" | cut -d'.' -f1)"
|
||||
done
|
||||
echo ""
|
||||
|
||||
# Assets preservados
|
||||
echo -e "${GREEN}ASSETS PRESERVADOS${NC}"
|
||||
echo " Caminho: ${ASSETS_PATH:-/var/ci/assets}"
|
||||
echo " Conteudo:"
|
||||
ls -la "${ASSETS_PATH:-/var/ci/assets}" 2>/dev/null || echo " (vazio)"
|
||||
echo ""
|
||||
|
||||
echo -e "${BLUE}============================================================${NC}"
|
||||
Reference in New Issue
Block a user