Mercure-Hub: 2. El script de ciclo de vida

Esta documentación forma parte de la guía GitHub Actions y GitLab CI. Consulte la guía completa aquí: Inicie un servicio real de Mercure Hub desde su pipeline de GitHub Actions o GitLab CI, ejecute sus pruebas sobre él y elimínelo automáticamente.

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece un servicio totalmente gestionado de Mercure-Hub en la nube, diseñado para que la entrega de datos en tiempo real sea sencilla y fiable. Obtendrá:

  • Solicitudes y tamaños de mensajes ilimitados para una flexibilidad total.
  • Un dominio personalizado con HTTPS integrado (por ejemplo, https://real-time.su-empresa.com).
  • Actualizaciones con un solo clic para mantener su hub siempre actualizado sin complicaciones.
  • Alto rendimiento y gran seguridad sobre una infraestructura privada y dedicada.
  • Múltiples regiones disponibles: 🇪🇺 Europa y 🇺🇸 USA para una entrega de baja latencia.

Póngase en marcha rápidamente: solo necesita 5 minutos para desplegar su entorno de Mercure-Hub cloud hosting y empezar a enviar actualizaciones en tiempo real a sus aplicaciones.

A continuación, tiene un ejemplo completo de script que gestiona todo el ciclo de vida del servicio. Demuestra lo sencillo que es el proceso, con solo unos pocos comandos. Puede copiar el YAML listo para su plataforma desde las secciones siguientes.

#!/bin/bash
set -euo pipefail

# STACKHERO_TOKEN lo proporciona el secreto de CI, la CLI lo detecta automáticamente.

stackName="ci-mercure-hub-$$"          # Nombre de stack único para cada ejecución
serviceStore="mercure-hub"             # El store del servicio Mercure Hub
instance="20G"        # Modifique si es necesario (ver paso 3)
region="europe"                         # Nombre de la región (ver stackhero regions-list)

# 1. Instalar la CLI en el runner
curl -fsSL https://www.stackhero.io/install.sh | sh

# 2. Instalar el cliente necesario para el smoke test (jq + curl son la base)
apt-get update && apt-get install -y --no-install-recommends jq curl

# 3. Crear una stack dedicada para esta ejecución
stackId=$(stackhero --format=script stack-create --name="$stackName")
echo "Stack creada: $stackId"

# 4. Añadir Mercure Hub y capturar su service id
serviceId=$(stackhero --format=script service-add \
  --stack="$stackId" \
  --service-store="$serviceStore" \
  --instance="$instance" \
  --region="$region")
echo "Servicio añadido: $serviceId"

# 5. Esperar a que el servicio esté operativo (puede tardar unos minutos)
stackhero service-wait-for --service="$serviceId"

# 6. Leer la configuración (contiene las credenciales generadas)
config=$(stackhero service-configuration-get --service="$serviceId" --format=json)

# 7. Extraer las credenciales necesarias
host=$(echo "$config" | jq -r '.configuration.domain')

# 8. Smoke test: Request the hub endpoint and check it answers.
curl -fsS -o /dev/null -w "%{http_code}" "https://$host/.well-known/mercure?topic=test" | grep -qE "^(200|400|401)$"

echo "✅ Mercure Hub es accesible desde CI."

El paso de eliminación, que borra el servicio, espera a que se elimine y luego borra la stack, se detalla en las secciones específicas de cada plataforma más abajo. Este enfoque garantiza que la limpieza siempre se realice, incluso si falla el smoke test.

Una stack solo puede eliminarse cuando está vacía. Elimine siempre primero el servicio y espere a que se borre antes de eliminar la stack. El comando service-wait-for asegura que el servicio esté en ejecución o eliminado antes de continuar, por lo que es la herramienta adecuada para esperar la eliminación.