Mosquitto: 4. GitHub Actions
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.
Pour commencer, enregistrez le contenu suivant dans .github/workflows/ci.yml. Désormais, chaque push et pull request lancera des tests sur une vraie instance Mosquitto.
name: CI avec Mosquitto
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
env:
STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
STACK_NAME: ci-mosquitto-${{ github.run_id }}-${{ github.run_attempt }}
INSTANCE: "200" # Modifiez si besoin (voir étape 3)
REGION: europe
steps:
- uses: actions/checkout@v4
- name: Installer le Stackhero CLI et le client
run: |
curl -fsSL https://www.stackhero.io/install.sh | sh
apt-get update && apt-get install -y --no-install-recommends jq curl mosquitto-clients
- name: Créer le service Mosquitto
run: |
set -euo pipefail
STACK_ID=$(stackhero --format=script stack-create --name="$STACK_NAME")
echo "STACK_ID=$STACK_ID" >> "$GITHUB_ENV"
SERVICE_ID=$(stackhero --format=script service-add \
--stack="$STACK_ID" \
--service-store="mosquitto" \
--instance="$INSTANCE" \
--region="$REGION")
echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
stackhero service-wait-for --service="$SERVICE_ID"
- name: Exécuter les tests sur Mosquitto
run: |
set -euo pipefail
config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
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')
# 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."
# Vous pouvez lancer votre propre suite de tests ici avec les identifiants ci-dessus ...
- name: Nettoyage (toujours, même en cas d'échec)
if: always()
run: |
if [ -n "${SERVICE_ID:-}" ]; then
stackhero service-delete --service="$SERVICE_ID" --confirm
stackhero service-wait-for --service="$SERVICE_ID"
fi
if [ -n "${STACK_ID:-}" ]; then
stackhero stack-delete --stack="$STACK_ID" --confirm
fi
L'étape de nettoyage utilise if: always() pour s'assurer qu'elle s'exécute dans tous les cas, garantissant la suppression de votre instance Mosquitto et évitant toute facturation pour des ressources inutilisées.