Skip to content

Craft CMS Auto-Update Script

Voraussetzungen

Damit das Update Skript zuverlässig funktioniert, müssen folgende Bedingungen erfüllt sein.

  • Das Forge Backup ist eingerichtet
  • Das Backup wird regelmäßig mindestens einmal pro Tag in den Hetzner Object Storage hochgeladen

Installation

  1. Das GitHub Action Script wird im Repository unter
    .github/workflows/craft-update.yml abgelegt (Muster ist immer hier: https://github.com/farbcodegmbh/farbcode.net/blob/master/.github/workflows/craft-auto-update.yml)

  2. Die benötigten Secrets werden im Repository hinterlegt unter
    Settings → Secrets and variables → Actions → New repository secret

Benötigte Secrets

Secret NameErforderlichBeispielwertHinweise
CRAFT_DBNAMEJaz.B. craft_livegenau wie Datenbank des entsprechenden Live-Systems (siehe forge)
CRAFT_PATHNeinz.B. cmsOptional, falls Craft nicht im Root liegt
CRAFT_PHP_VERSIONJaz.B. 8.3
HETZNER_S3_ACCESS_KEYJaXOGH6I57ZXMQ717JWOCYImmer gleich
HETZNER_S3_BUCKETJafarbcode-backupImmer gleich
HETZNER_S3_ENDPOINTJahttps://fsn1.your-objectstorage.comImmer gleich
HETZNER_S3_PREFIXJaz.B. farbcode-h10In der Regel Servername (siehe auch Backup Konfiguration bei Forge. Es ist der aus dem Feld "Directory"
HETZNER_S3_REGIONJaeu-centralImmer gleich
HETZNER_S3_SECRET_KEYJasiehe KeePass: Craft CMS GitHub Auto Updater Hetzner S3 Key
SLACK_WEBHOOK_URLJahttps://hooks.slack.com/services/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Immer gleich
  1. Jetzt das Skrip einmalig von Hand starten: "Actions" -> "Craft Auto Update" -> "Run workflow"

Funktionsweise

Das Skript wird automatisch jeden Monat am ersten Tag um 9 Uhr ausgeführt und führt dabei folgende Schritte aus.

  • Lädt das aktuellste Craft Backup aus dem Hetzner Object Storage
  • Erstellt lokal eine MySQL Datenbank mit identischem Namen wie im Live System
  • Importiert das Datenbank Backup unverändert
  • Führt die Craft Updates aus
bash
php craft update all --minor-only --force
php craft up --no-backup
  • Prüft Frontend und Admin Oberfläche auf Erreichbarkeit per HTTP Status 200
  • Erstellt automatisch einen Pull Request mit allen Änderungen
  • Dokumentiert den aktuellen Systemstatus in der README
  • Sendet eine Slack Benachrichtigung bei Erfolg oder Fehler