From de54e5e2006f6e94524538410c85682870a765a1 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Tue, 24 Jun 2025 21:39:32 -0300 Subject: [PATCH] Test Kuma Api con Endpoints --- .gitea/workflows/deploy.yml | 69 ++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 36 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 0cf34bc..0ccbfff 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -11,20 +11,15 @@ jobs: steps: - name: Run Optimized CI/CD Process on Host via SSH - # La sección 'env' aquí ya no es necesaria, pasamos los secretos directamente run: | set -e - # Configura SSH apt-get update -qq && apt-get install -y openssh-client git mkdir -p ~/.ssh echo "${{ secrets.PROD_SERVER_SSH_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H ${{ secrets.PROD_SERVER_HOST }} >> ~/.ssh/known_hosts - # --- ¡CAMBIO CLAVE AQUÍ! --- - # Inyectamos los secretos como variables de entorno para el comando remoto - # Y luego ejecutamos el script del heredoc con 'bash -s' ssh ${{ secrets.PROD_SERVER_USER }}@${{ secrets.PROD_SERVER_HOST }} " export UPTIME_KUMA_URL='${{ secrets.UPTIME_KUMA_URL }}' export UPTIME_KUMA_API_KEY='${{ secrets.UPTIME_KUMA_API_KEY }}' @@ -37,43 +32,48 @@ jobs: echo "--- INICIO DEL DESPLIEGUE OPTIMIZADO ---" # --- SECCIÓN DE MONITOREO --- - # Las variables (UPTIME_KUMA_URL, etc.) ahora están disponibles gracias al comando 'export' anterior. - - # Instalar curl y jq si no están presentes - if ! command -v curl &> /dev/null || ! command -v jq &> /dev/null; then - echo "Instalando curl y jq..." - # Usar 'sudo' si el usuario no es root - sudo apt-get update -qq && sudo apt-get install -y curl jq + if ! command -v curl &> /dev/null; then + echo "Instalando curl..." + sudo apt-get update -qq && sudo apt-get install -y curl fi - # Función para cambiar el estado de la ventana de mantenimiento - toggle_maintenance() { + # --- ¡FUNCIONES CORREGIDAS! --- + # Función para PAUSAR el monitoreo + pause_maintenance() { local id=$1 - local active_state=$2 - echo "Cambiando estado de mantenimiento de la ventana ID:${id} a: ${active_state}" - - # Corregido: el endpoint es '/maintenances/' (plural) - local response=$(curl -s -w "%{http_code}" -X PATCH "${UPTIME_KUMA_URL}/api/maintenances/${id}" \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer ${UPTIME_KUMA_API_KEY}" \ - --data-raw "{\"active\": ${active_state}}") + echo "Pausando mantenimiento para la ventana ID:${id}" + local response=$(curl -s -w "%{http_code}" -X POST "${UPTIME_KUMA_URL}/api/maintenances/${id}/pause" \ + -H "Authorization: Bearer ${UPTIME_KUMA_API_KEY}") local http_code=$(tail -n1 <<< "$response") if [ "$http_code" -ne 200 ]; then - echo "Error al interactuar con la API de Uptime Kuma. Código HTTP: $http_code" - # Opcional: imprimir el cuerpo de la respuesta para más detalles - echo "Cuerpo de la respuesta: $(head -n -1 <<< "$response")" + echo "Error al pausar el monitoreo. Código HTTP: $http_code" return 1 fi - echo "Estado de mantenimiento actualizado con éxito." + echo "Monitoreo pausado con éxito." } - # Usamos 'trap' para asegurar que el monitoreo se reanude siempre. - trap 'echo "--- Limpiando: Reanudando monitoreo ---"; toggle_maintenance "$UPTIME_KUMA_MAINTENANCE_ID" false' EXIT + # Función para REANUDAR el monitoreo + resume_maintenance() { + local id=$1 + echo "Reanudando monitoreo para la ventana ID:${id}" + local response=$(curl -s -w "%{http_code}" -X POST "${UPTIME_KUMA_URL}/api/maintenances/${id}/resume" \ + -H "Authorization: Bearer ${UPTIME_KUMA_API_KEY}") + + local http_code=$(tail -n1 <<< "$response") + if [ "$http_code" -ne 200 ]; then + echo "Error al reanudar el monitoreo. Código HTTP: $http_code" + return 1 + fi + echo "Monitoreo reanudado con éxito." + } - # Activamos el mantenimiento + # 'trap' ahora llama a la función correcta 'resume_maintenance' + trap 'echo "--- Limpiando: Reanudando monitoreo ---"; resume_maintenance "$UPTIME_KUMA_MAINTENANCE_ID"' EXIT + + # Pausamos el mantenimiento echo "--- Pausando monitoreo en Uptime Kuma ---" - toggle_maintenance "$UPTIME_KUMA_MAINTENANCE_ID" true + pause_maintenance "$UPTIME_KUMA_MAINTENANCE_ID" # --- FIN SECCIÓN DE MONITOREO --- @@ -83,10 +83,9 @@ jobs: REPO_NAME="gestionintegralweb" GITEA_REPO_PATH="/var/lib/docker/volumes/gitea-stack_gitea-data/_data/git/repositories/${REPO_OWNER}/${REPO_NAME}.git" - echo "Clonando repositorio desde: $GITEA_REPO_PATH ..." + echo "Clonando repositorio..." git clone "$GITEA_REPO_PATH" "$TEMP_DIR" cd "$TEMP_DIR" - # La variable GITEA_SHA fue exportada antes del heredoc git checkout "$GITEA_SHA" # 2. Construcción paralela @@ -97,17 +96,15 @@ jobs: echo "Construyendo $image_name..." docker build -t "$image_name" -f "$dockerfile" "$context" } - echo "Construyendo imágenes en paralelo..." + echo "Construyendo imágenes..." (build_image "Backend/GestionIntegral.Api/Dockerfile" "dmolinari/gestionintegralweb-backend:latest" ".") & (build_image "Frontend/Dockerfile" "dmolinari/gestionintegralweb-frontend:latest" ".") & wait # 3. Despliegue con Docker Compose cd /opt/gestion-integral - # La variable DB_SA_PASSWORD ya fue exportada al inicio. - echo "--- INICIO DE LA RECREACIÓN DE SERVICIOS (MONITOREO PAUSADO) ---" + echo "Recreando servicios..." docker compose up -d --force-recreate - echo "--- FIN DE LA RECREACIÓN DE SERVICIOS ---" # 4. Limpieza echo "Realizando limpieza de imágenes..."