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
Das GitHub Action Script wird im Repository unter
.github/workflows/craft-update.ymlabgelegt (Muster ist immer hier: https://github.com/farbcodegmbh/farbcode.net/blob/master/.github/workflows/craft-auto-update.yml)Die benötigten Secrets werden im Repository hinterlegt unter
Settings → Secrets and variables → Actions → New repository secret
Benötigte Secrets
| Secret Name | Erforderlich | Beispielwert | Hinweise |
|---|---|---|---|
| CRAFT_DBNAME | Ja | z.B. craft_live | genau wie Datenbank des entsprechenden Live-Systems (siehe forge) |
| CRAFT_PATH | Nein | z.B. cms | Optional, falls Craft nicht im Root liegt |
| CRAFT_PHP_VERSION | Ja | z.B. 8.3 | |
| HETZNER_S3_ACCESS_KEY | Ja | XOGH6I57ZXMQ717JWOCY | Immer gleich |
| HETZNER_S3_BUCKET | Ja | farbcode-backup | Immer gleich |
| HETZNER_S3_ENDPOINT | Ja | https://fsn1.your-objectstorage.com | Immer gleich |
| HETZNER_S3_PREFIX | Ja | z.B. farbcode-h10 | In der Regel Servername (siehe auch Backup Konfiguration bei Forge. Es ist der aus dem Feld "Directory" |
| HETZNER_S3_REGION | Ja | eu-central | Immer gleich |
| HETZNER_S3_SECRET_KEY | Ja | siehe KeePass: Craft CMS GitHub Auto Updater Hetzner S3 Key | |
| SLACK_WEBHOOK_URL | Ja | https://hooks.slack.com/services/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 | Immer gleich |
- 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
