Kafka: 4. GitHub Actions
Cette documentation fait partie du guide GitHub Actions & GitLab CI. Consultez le guide complet ici : Lancez un véritable service Kafka depuis votre pipeline GitHub Actions ou GitLab CI, exécutez vos tests dessus, puis supprimez-le automatiquement.
👋 Bienvenue sur la documentation de Stackhero !
Stackhero vous propose un environnement Kafka cloud entièrement managé, prêt en quelques minutes. Voici ce que vous pouvez attendre :
- Aucune limite sur la taille des messages ou le transfert : faites évoluer vos données sans vous soucier des restrictions.
- Mises à jour simples, en un clic pour garder votre plateforme à jour sans interruption ni intervention manuelle.
- Haute performance 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.