MySQL: 4. GitHub Actions
Diese Dokumentation ist Teil des GitHub Actions & GitLab CI-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Starten Sie einen echten MySQL-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 einen vollständig verwalteten MySQL Cloud Service, der die Bereitstellung und Verwaltung für produktive Workloads vereinfacht:
- Unbegrenzte Verbindungen und Datenübertragungen.
- Integrierte phpMyAdmin Web-Oberfläche für eine einfache Datenbankverwaltung.
- Updates ohne Aufwand dank One-Click-Upgrades.
- Gleichbleibende Performance und hohe Sicherheit auf einer privaten, dedizierten Infrastruktur.
Mit Stackhero steht Ihnen eine zuverlässige MySQL-Datenbank in wenigen Minuten bereit. Verbringen Sie weniger Zeit mit Einrichtung und Wartung und konzentrieren Sie sich auf die Entwicklung Ihrer Anwendungen. Testen Sie noch heute das MySQL Cloud Hosting auf Stackhero.
Speichern Sie den folgenden Inhalt als .github/workflows/ci.yml. Ab sofort werden bei jedem Push und Pull Request Tests gegen eine echte MySQL-Instanz ausgeführt.
name: CI mit MySQL
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
env:
STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
STACK_NAME: ci-mysql-${{ 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 default-mysql-client
- name: MySQL-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="mysql" \
--instance="$INSTANCE" \
--region="$REGION")
echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
stackhero service-wait-for --service="$SERVICE_ID"
- name: Tests gegen MySQL ausführen
run: |
set -euo pipefail
config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
host=$(echo "$config" | jq -r '.configuration.domain')
password=$(echo "$config" | jq -r '.configuration.mysqlRootPassword')
# Run a trivial query against the database.
mysql --host="$host" --port=3306 --user=root --password="$password" --ssl-mode=REQUIRED -e "SELECT 1;"
echo "✅ MySQL 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 MySQL-Instanz immer gelöscht und Sie zahlen nicht für ungenutzte Ressourcen.