Some checks failed
Deploy WiFi-ETL Prod / deploy (push) Failing after 0s
- Adicionado suporte para extração de dados do Ruijie e WiFeed, incluindo autenticação e tratamento de erros. - Adicionado suporte para watermarking em ambas as fontes para extração incremental. - Criado script de transformação para mesclagem de MAC addresses. - Implementado Backfill para WiFeed, permitindo extração histórica com controle de taxa. - Adicionado script de depuração para testes de transformação do WiFeed. - Desenvolvido scripts de implantação e configurações do Docker para setup de produção. - Criado script de inicialização do schema do PostgreSQL em infra/init.sql. - Adicionado teste automatizado para lógica de transformação e carregamento em test_transform_load.py. - Atualizado documentation para implantação e setup de produção.
89 lines
2.5 KiB
Bash
89 lines
2.5 KiB
Bash
#!/bin/bash
|
|
# WiFi ETL — Deploy Script (Production)
|
|
# Uso: ./deploy.sh [prod|staging]
|
|
# Exemplo: ./deploy.sh prod
|
|
|
|
set -e
|
|
|
|
ENV_FILE=".env"
|
|
IMAGE_NAME="wifi-etl"
|
|
CONTAINER_NAME="wifi-etl-worker"
|
|
NETWORK_NAME="wifi-etl-net"
|
|
|
|
# Carrega .env
|
|
if [ -f "$ENV_FILE" ]; then
|
|
export $(grep -v '^#' "$ENV_FILE" | xargs)
|
|
else
|
|
echo "❌ Arquivo $ENV_FILE não encontrado."
|
|
exit 1
|
|
fi
|
|
|
|
TARGET=${1:-prod}
|
|
|
|
if [ "$TARGET" != "prod" ] && [ "$TARGET" != "staging" ]; then
|
|
echo "Uso: $0 [prod|staging]"
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== Deploy para $TARGET ==="
|
|
|
|
# --- 1) Build local ---
|
|
echo "→ Buildando imagem Docker..."
|
|
docker build -f infra/Dockerfile -t ${IMAGE_NAME}:latest .
|
|
|
|
# --- 2) Push para registry (opcional) ---
|
|
if [ -n "$REGISTRY" ]; then
|
|
echo "→ Tagging & push para $REGISTRY..."
|
|
docker tag ${IMAGE_NAME}:latest ${REGISTRY}/${IMAGE_NAME}:latest
|
|
docker push ${REGISTRY}/${IMAGE_NAME}:latest
|
|
fi
|
|
|
|
# --- 3) Envia imagem ao servidor ---
|
|
echo "→ Enviando imagem ao servidor $SSH_HOST..."
|
|
docker save ${IMAGE_NAME}:latest -o /tmp/wifi-etl-image.tar
|
|
|
|
scp -i "$SSH_PRIVATE_KEY" \
|
|
-o StrictHostKeyChecking=no \
|
|
/tmp/wifi-etl-image.tar ${SSH_USER}@${SSH_HOST}:/tmp/
|
|
|
|
# --- 4) Deploy remoto ---
|
|
ssh -i "$SSH_PRIVATE_KEY" \
|
|
-o StrictHostKeyChecking=no \
|
|
${SSH_USER}@${SSH_HOST} << EOF
|
|
set -e
|
|
echo " → Carregando imagem no servidor..."
|
|
docker load -i /tmp/wifi-etl-image.tar
|
|
|
|
echo " → Criando network..."
|
|
docker network create ${NETWORK_NAME} 2>/dev/null || true
|
|
|
|
echo " → Parando container anterior..."
|
|
docker stop ${CONTAINER_NAME} 2>/dev/null || true
|
|
docker rm ${CONTAINER_NAME} 2>/dev/null || true
|
|
|
|
echo " → Iniciando novo container..."
|
|
docker run -d \
|
|
--name ${CONTAINER_NAME} \
|
|
--network ${NETWORK_NAME} \
|
|
-e DB_HOST="${DB_HOST}" \
|
|
-e DB_PORT="${DB_PORT:-5432}" \
|
|
-e DB_NAME="${DB_NAME:-wifi_etl}" \
|
|
-e DB_USER="${DB_USER:-postgres}" \
|
|
-e DB_PASSWORD="${DB_PASSWORD}" \
|
|
-e RUIJIE_BASE_URL="${RUIJIE_BASE_URL}" \
|
|
-e RUIJIE_APPID="${RUIJIE_APPID}" \
|
|
-e RUIJIE_SECRET="${RUIJIE_SECRET}" \
|
|
-e RUIJIE_ACCESS_TOKEN="${RUIJIE_ACCESS_TOKEN}" \
|
|
-e RUIJIE_GROUP_ID="${RUIJIE_GROUP_ID:-9290679}" \
|
|
-e WIFEED_BASE_URL="${WIFEED_BASE_URL}" \
|
|
-e WIFEED_CLIENT_ID="${WIFEED_CLIENT_ID}" \
|
|
-e WIFEED_CLIENT_SECRET="${WIFEED_CLIENT_SECRET}" \
|
|
-e LOG_LEVEL="${LOG_LEVEL:-INFO}" \
|
|
${IMAGE_NAME}:latest
|
|
|
|
echo "✅ Deploy OK — Container: \$(docker ps -qf name=${CONTAINER_NAME})"
|
|
EOF
|
|
|
|
rm -f /tmp/wifi-etl-image.tar
|
|
echo "✅ Deploy concluído em $TARGET"
|