Kafka: 4. GitHub Actions

Cette documentation fait partie du guide GitHub Actions & GitLab CI. Consultez le guide complet ici : Lancez un vrai service Kafka à 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 propose un environnement Kafka cloud entièrement géré, prêt en quelques minutes. Voici ce que vous pouvez attendre :

  • Aucune limite sur la taille ou le transfert des messages : faites évoluer vos données sans vous soucier des plafonds.
  • Mises à jour simples, en un clic pour garder votre plateforme à jour sans interruption ni intervention manuelle.
  • Performance élevée constante et sécurité renforcée sur votre propre infrastructure privée et dédiée.

Si vous souhaitez accélérer vos projets et réduire la charge opérationnelle, Stackhero propose l'hébergement Kafka cloud pour vous accompagner. Vous pouvez disposer d'un cluster prêt pour la production en environ 5 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 Kafka.

name: CI avec Kafka

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    env:
      STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
      STACK_NAME: ci-kafka-${{ github.run_id }}-${{ github.run_attempt }}
      INSTANCE: "10G"   # 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 netcat-openbsd

      - name: Créer le service Kafka
        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="kafka" \
            --instance="$INSTANCE" \
            --region="$REGION")
          echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
          stackhero service-wait-for --service="$SERVICE_ID"

      - name: Exécuter les tests sur Kafka
        run: |
          set -euo pipefail
          config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
          host=$(echo "$config" | jq -r '.configuration.domain')
          # Open a TCP connection to the broker port.
          nc -z -w 5 "$host" 9092
          echo "✅ Kafka 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 Kafka et évitant toute facturation pour des ressources inutilisées.