Memcached: 4. GitHub Actions
Diese Dokumentation ist Teil des GitHub Actions & GitLab CI-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Starten Sie einen echten Memcached-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 ein vollständig verwaltetes Memcached Cloud, das das Caching Ihrer Anwendungen einfach, sicher und leistungsstark macht.
- Wenden Sie Updates in Sekunden mit nur einem Klick an.
- Profitieren Sie von gleichbleibender Performance und starker Sicherheit auf einer privaten, dedizierten Infrastruktur.
Sparen Sie Zeit und konzentrieren Sie sich auf die Entwicklung. Das Memcached Cloud Hosting von Stackhero ist in etwa 5 Minuten einsatzbereit.
Speichern Sie den folgenden Inhalt als .github/workflows/ci.yml. Ab sofort werden bei jedem Push und Pull Request Tests gegen eine echte Memcached-Instanz ausgeführt.
name: CI mit Memcached
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
env:
STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
STACK_NAME: ci-memcached-${{ github.run_id }}-${{ github.run_attempt }}
INSTANCE: "1G" # 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 libmemcached-tools
- name: Memcached-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="memcached" \
--instance="$INSTANCE" \
--region="$REGION")
echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
stackhero service-wait-for --service="$SERVICE_ID"
- name: Tests gegen Memcached ausführen
run: |
set -euo pipefail
config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
host=$(echo "$config" | jq -r '.configuration.domain')
user=$(echo "$config" | jq -r '.configuration.credentials.login')
password=$(echo "$config" | jq -r '.configuration.credentials.password')
# Authenticate with SASL and read a key (a miss still proves auth works).
memccat --servers="$host:11211" --binary --username="$user" --password="$password" stackhero-ci-probe 2>&1 | grep -vq "AUTHENTICATION"
echo "✅ Memcached 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 Memcached-Instanz immer gelöscht und Sie zahlen nicht für ungenutzte Ressourcen.