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.