#!/bin/bash # Monitor Gitea Action after git push # Este script se ejecuta después de un git push y espera a que termine la Gitea Action set -euo pipefail # Configuración GITEA_URL="https://gitea.nucleoriofrio.com" OWNER="nucleo000" REPO="plantillaNuxtAuthentikProxy" GITEA_TOKEN="${GITEA_TOKEN:-}" # Debe estar en variable de entorno MAX_WAIT_SECONDS=600 # 10 minutos POLL_INTERVAL=10 # Consultar cada 10 segundos # Leer el input JSON del hook INPUT=$(cat) # Verificar si el comando fue un git push COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // ""') if [[ ! "$COMMAND" =~ git[[:space:]]+push ]]; then # No fue un git push, salir sin hacer nada exit 0 fi # Verificar que existe el token if [ -z "$GITEA_TOKEN" ]; then cat <&2 # Esperar un poco antes de la primera consulta (dar tiempo a que Gitea cree la action) sleep 5 # Polling loop elapsed=0 while [ $elapsed -lt $MAX_WAIT_SECONDS ]; do # Consultar el estado TASK_DATA=$(get_latest_action_status) if [ -z "$TASK_DATA" ]; then echo "⏳ Esperando que Gitea cree la action... (${elapsed}s)" >&2 sleep $POLL_INTERVAL elapsed=$((elapsed + POLL_INTERVAL)) continue fi STATUS=$(echo "$TASK_DATA" | jq -r '.status // "unknown"') echo "📊 Estado actual: $STATUS (${elapsed}s)" >&2 # Verificar si terminó case "$STATUS" in success|failure|cancelled) # Action terminó! format_result "$STATUS" "$TASK_DATA" exit 0 ;; running|pending|waiting) # Todavía corriendo sleep $POLL_INTERVAL elapsed=$((elapsed + POLL_INTERVAL)) ;; *) # Estado desconocido echo "⚠️ Estado desconocido: $STATUS" >&2 sleep $POLL_INTERVAL elapsed=$((elapsed + POLL_INTERVAL)) ;; esac done # Timeout alcanzado cat <