Mosquitto: 2. Lo script di ciclo di vita
Questa documentazione fa parte della guida GitHub Actions & GitLab CI. Consulta la guida completa qui: Avvia un vero servizio Mosquitto dalla tua pipeline GitHub Actions o GitLab CI, esegui i tuoi test su di esso e rimuovilo automaticamente.
👋 Benvenuto nella documentazione di Stackhero!
Stackhero offre un ambiente Mosquitto MQTT cloud completamente gestito, progettato per garantire affidabilità e flessibilità:
- Throughput illimitato per i messaggi e trasferimenti di dati, così i tuoi workflow non incontreranno mai limiti artificiali.
- Autenticazione illimitata dei dispositivi tramite la tua API esterna, per un onboarding e una gestione degli accessi senza interruzioni.
- ACL avanzate per un controllo dettagliato su topic, utenti e azioni.
- Un nome di dominio personalizzato con HTTPS integrato per endpoint sicuri e brandizzati (ad esempio: https://mqtt.tua-azienda.com).
- Aggiornamenti senza complicazioni: applica miglioramenti o patch di sicurezza con un solo clic.
- Performance costante e sicurezza elevata, con ogni istanza eseguita su un'infrastruttura privata e dedicata.
Accelera i tuoi progetti IoT e riduci il carico operativo. Puoi avere un'istanza Mosquitto MQTT cloud hosting sicura e pronta per la produzione in pochi minuti.
Ecco un esempio completo di script che gestisce l'intero ciclo di vita del servizio. Dimostra quanto sia semplice la configurazione, con pochi comandi. Puoi copiare il file YAML già pronto per la tua piattaforma dalle sezioni sottostanti.
#!/bin/bash
set -euo pipefail
# STACKHERO_TOKEN viene fornito dal secret CI, il CLI lo rileva automaticamente.
stackName="ci-mosquitto-$$" # Nome stack univoco per ogni esecuzione
serviceStore="mosquitto" # Il service store di Mosquitto
instance="200" # Modifica se necessario (vedi step 3)
region="europe" # Nome regione (vedi stackhero regions-list)
# 1. Installa il CLI sul runner
curl -fsSL https://www.stackhero.io/install.sh | sh
# 2. Installa il client necessario per lo smoke test (jq + curl sono la base)
apt-get update && apt-get install -y --no-install-recommends jq curl mosquitto-clients
# 3. Crea uno stack dedicato per questa esecuzione
stackId=$(stackhero --format=script stack-create --name="$stackName")
echo "Stack creato: $stackId"
# 4. Aggiungi Mosquitto e ottieni il suo service id
serviceId=$(stackhero --format=script service-add \
--stack="$stackId" \
--service-store="$serviceStore" \
--instance="$instance" \
--region="$region")
echo "Servizio aggiunto: $serviceId"
# 5. Attendi che il servizio sia operativo (può richiedere alcuni minuti)
stackhero service-wait-for --service="$serviceId"
# 6. Leggi la configurazione (contiene le credenziali generate)
config=$(stackhero service-configuration-get --service="$serviceId" --format=json)
# 7. Estrai le credenziali necessarie
host=$(echo "$config" | jq -r '.configuration.domain')
user=$(echo "$config" | jq -r '.configuration.authenticationUsers[0].login')
password=$(echo "$config" | jq -r '.configuration.authenticationUsers[0].password')
# 8. Smoke test: Publish a test message to a topic.
mosquitto_pub -h "$host" -p 8883 -u "$user" -P "$password" --capath /etc/ssl/certs -t "stackhero/ci" -m "hello"
echo "✅ Mosquitto è raggiungibile dalla CI."
La fase di teardown, che elimina il servizio, attende la sua rimozione e poi elimina lo stack, viene gestita nelle sezioni specifiche per ciascuna piattaforma qui sotto. Questo approccio garantisce che la pulizia venga sempre eseguita, anche se uno smoke test fallisce.
Uno stack può essere eliminato solo quando è vuoto. Elimina sempre prima il servizio e attendi la sua rimozione, poi elimina lo stack. Il comando
service-wait-forassicura che il servizio sia in esecuzione o eliminato prima di procedere, rendendolo lo strumento ideale anche per attendere la cancellazione.