InfluxDB: 4. GitHub Actions

Diese Dokumentation ist Teil des GitHub Actions & GitLab CI-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Starten Sie einen echten InfluxDB-Service direkt aus Ihrer GitHub Actions- oder GitLab CI-Pipeline, führen Sie Ihre Tests dagegen aus und fahren Sie ihn anschließend automatisch wieder herunter.

👋 Willkommen in der Stackhero-Dokumentation

Stackhero bietet Ihnen eine vollständig verwaltete InfluxDB Cloud-Umgebung, die auf Geschwindigkeit und Einfachheit ausgelegt ist:

  • Unbegrenzte Schreibvorgänge, Abfragen, Dashboards, Tasks und Buckets.
  • Unbegrenzte Datenaufbewahrung: Bewahren Sie Ihre Metriken so lange auf, wie Sie möchten.
  • Unbegrenzte Netzwerk- und Datentransfers – ohne versteckte Limits.
  • Updates mit nur einem Klick: Sie nutzen immer die neuesten Funktionen und Fehlerbehebungen.
  • Stetige Performance und hohe Sicherheit auf Ihrer eigenen privaten, dedizierten Infrastruktur.

Mit Stackhero können Sie sich ganz auf Ihre Daten und Analysen konzentrieren. Der Einstieg in das InfluxDB Cloud Hosting dauert nur wenige Minuten, und jede Bereitstellung ist auf langfristige Zuverlässigkeit optimiert.

Speichern Sie den folgenden Inhalt als .github/workflows/ci.yml. Ab sofort werden bei jedem Push und Pull Request Tests gegen eine echte InfluxDB-Instanz ausgeführt.

name: CI mit InfluxDB

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    env:
      STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
      STACK_NAME: ci-influxdb-${{ github.run_id }}-${{ github.run_attempt }}
      INSTANCE: "10G"   # Bei Bedarf anpassen (siehe Schritt 3)
      REGION: europe
    steps:
      - uses: actions/checkout@v4

      - name: Stackhero CLI und Client installieren
        run: |
          curl -fsSL https://www.stackhero.io/install.sh | sh
          apt-get update && apt-get install -y --no-install-recommends jq curl

      - name: InfluxDB-Service erstellen
        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="influxdb" \
            --instance="$INSTANCE" \
            --region="$REGION")
          echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
          stackhero service-wait-for --service="$SERVICE_ID"

      - name: Tests gegen InfluxDB ausführen
        run: |
          set -euo pipefail
          config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
          host=$(echo "$config" | jq -r '.configuration.domain')
          # Call the InfluxDB health endpoint.
          curl -fsS "https://$host:8086/health" | grep -q '"status":"pass"'
          echo "✅ InfluxDB ist aus der CI erreichbar."
          # Sie können hier Ihre eigene Test-Suite mit den oben extrahierten Zugangsdaten ausführen ...

      - name: Aufräumen (immer, auch bei Fehlern)
        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

Der Teardown-Schritt ist mit if: always() konfiguriert, sodass er unabhängig vom Pipeline-Ergebnis ausgeführt wird. So wird Ihre InfluxDB-Instanz immer gelöscht und Sie zahlen nicht für ungenutzte Ressourcen.