Mosquitto: 2. Le script de cycle de vie

Cette documentation fait partie du guide GitHub Actions & GitLab CI. Consultez le guide complet ici : Lancez un vrai service Mosquitto à partir de votre pipeline GitHub Actions ou GitLab CI, exécutez vos tests dessus, puis supprimez-le automatiquement.

👋 Bienvenue dans la documentation Stackhero !

Stackhero vous offre un environnement Mosquitto MQTT cloud entièrement géré, conçu pour la fiabilité et la flexibilité :

  • Débit illimité pour les messages et les transferts de données, afin que vos workflows ne soient jamais limités artificiellement.
  • Authentification illimitée des appareils via votre propre API externe, pour simplifier l'intégration et la gestion des accès.
  • ACLs avancées pour un contrôle précis des topics, des utilisateurs et des actions.
  • Un nom de domaine personnalisé avec HTTPS intégré pour des endpoints sécurisés et à l'image de votre marque (par exemple : https://mqtt.votre-entreprise.com).
  • Mises à jour sans tracas : appliquez les améliorations ou correctifs de sécurité en un seul clic.
  • Performance constante et sécurité renforcée, chaque instance fonctionnant sur une infrastructure privée et dédiée.

Accélérez vos projets IoT et réduisez la charge opérationnelle. Vous pouvez mettre en place une instance Mosquitto MQTT cloud hosting sécurisée et prête pour la production en seulement quelques minutes.

Voici un exemple complet de script qui gère tout le cycle de vie du service. Il montre à quel point la configuration est simple, avec seulement quelques commandes. Vous pouvez copier le YAML prêt à l'emploi pour votre plateforme dans les sections ci-dessous.

#!/bin/bash
set -euo pipefail

# STACKHERO_TOKEN est fourni par le secret CI, le CLI le détecte automatiquement.

stackName="ci-mosquitto-$$"          # Nom de stack unique pour chaque exécution
serviceStore="mosquitto"             # Le store du service Mosquitto
instance="200"        # Modifiez si besoin (voir étape 3)
region="europe"                         # Nom de la région (voir stackhero regions-list)

# 1. Installer le CLI sur le runner
curl -fsSL https://www.stackhero.io/install.sh | sh

# 2. Installer le client nécessaire pour le smoke test (jq + curl sont la base)
apt-get update && apt-get install -y --no-install-recommends jq curl mosquitto-clients

# 3. Créer une stack dédiée pour cette exécution
stackId=$(stackhero --format=script stack-create --name="$stackName")
echo "Stack créée : $stackId"

# 4. Ajouter Mosquitto et récupérer son service id
serviceId=$(stackhero --format=script service-add \
  --stack="$stackId" \
  --service-store="$serviceStore" \
  --instance="$instance" \
  --region="$region")
echo "Service ajouté : $serviceId"

# 5. Attendre que le service soit opérationnel (cela peut prendre quelques minutes)
stackhero service-wait-for --service="$serviceId"

# 6. Lire la configuration (contient les identifiants générés)
config=$(stackhero service-configuration-get --service="$serviceId" --format=json)

# 7. Extraire les identifiants nécessaires
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 est accessible depuis la CI."

L'étape de suppression, qui efface le service, attend sa suppression puis supprime la stack, est détaillée dans les sections spécifiques à chaque plateforme ci-dessous. Cette méthode garantit que le nettoyage est toujours effectué, même si un smoke test échoue.

Une stack ne peut être supprimée que si elle est vide. Supprimez toujours le service en premier et attendez sa suppression, puis supprimez la stack. La commande service-wait-for garantit que le service est bien en cours d'exécution ou supprimé avant de continuer, c'est donc l'outil adapté pour attendre la suppression.