update
This commit is contained in:
74
ticket-setup
Executable file
74
ticket-setup
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
# Usage: ticket-setup <ticket-nr> <referenz-projekt>
|
||||
# Legt ~/arbeit/tickets/<nr> als Kopie des Referenzprojekts an,
|
||||
# spielt den Referenz-Snapshot ein und stellt alles auf <nr>.ddev.site um.
|
||||
set -euo pipefail
|
||||
|
||||
TICKET_NR="$1"
|
||||
REF="${2%/}"
|
||||
ZIEL="$HOME/arbeit/tickets/$TICKET_NR"
|
||||
SNAP="referenz-$(date +%d-%m-%y)"
|
||||
URL="https://$TICKET_NR.ddev.site"
|
||||
|
||||
if [ ! -d "$REF/.ddev" ]; then
|
||||
echo "Kein ddev-Projekt: $REF"
|
||||
exit 1
|
||||
fi
|
||||
if [ -e "$ZIEL" ]; then
|
||||
echo "$ZIEL existiert bereits. Vorher loeschen."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ddev-Name des Referenzprojekts = dessen bisheriger Host <name>.ddev.site
|
||||
REF_NAME=$(sed -nE 's/^name:[[:space:]]*"?([^"[:space:]]+)"?.*/\1/p' "$REF/.ddev/config.yaml" | head -1)
|
||||
if [ -z "$REF_NAME" ]; then
|
||||
echo "Kein name: in $REF/.ddev/config.yaml gefunden."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 1. Referenz-Snapshot mit heutigem Datum sicherstellen
|
||||
if compgen -G "$REF/.ddev/db_snapshots/$SNAP-*" > /dev/null; then
|
||||
echo "Snapshot $SNAP vorhanden."
|
||||
else
|
||||
echo "Snapshot $SNAP fehlt - wird im Referenzprojekt erzeugt."
|
||||
( cd "$REF" && ddev start && ddev snapshot --name="$SNAP" )
|
||||
fi
|
||||
|
||||
# 2. Projekt kopieren (ohne fremde Snapshots und ohne Cache)
|
||||
echo "Kopiere $REF -> $ZIEL"
|
||||
mkdir -p "$ZIEL"
|
||||
rsync -a --info=progress2 \
|
||||
--exclude='/.ddev/db_snapshots/' \
|
||||
--exclude='/var/cache/' \
|
||||
"$REF/" "$ZIEL/"
|
||||
|
||||
mkdir -p "$ZIEL/.ddev/db_snapshots"
|
||||
cp "$REF/.ddev/db_snapshots/$SNAP"-* "$ZIEL/.ddev/db_snapshots/"
|
||||
|
||||
# Vom Referenzprojekt mitkopierte Traefik-Router loeschen. Sonst kollidieren die
|
||||
# Router-Namen mit dem Referenzprojekt: traefik dedupliziert, der Healthcheck
|
||||
# zaehlt aber je Datei und laeuft 60 s in den Timeout. ddev legt sie neu an.
|
||||
for f in "$ZIEL/.ddev/traefik/config"/*.yaml; do
|
||||
[ -e "$f" ] || continue
|
||||
if head -1 "$f" | grep -q '^#ddev-generated'; then
|
||||
rm -f "$f"
|
||||
fi
|
||||
done
|
||||
|
||||
# 3. ddev und Shopware auf die Ticket-URL umstellen
|
||||
sed -i -E "s|^name:.*|name: \"$TICKET_NR\"|" "$ZIEL/.ddev/config.yaml"
|
||||
if [ -f "$ZIEL/.env.local" ]; then
|
||||
sed -i -E "s|^APP_URL=.*|APP_URL=\"$URL\"|" "$ZIEL/.env.local"
|
||||
fi
|
||||
|
||||
cd "$ZIEL"
|
||||
ddev start
|
||||
ddev snapshot restore "$SNAP"
|
||||
# Nur die Domains des Referenz-Hosts umbiegen. Ein pauschales Update wuerde
|
||||
# mehrere Sales Channels auf dieselbe URL setzen (unique index auf url).
|
||||
ddev exec bin/console sales-channel:update:domain "$TICKET_NR.ddev.site" \
|
||||
--previous-domain "$REF_NAME.ddev.site"
|
||||
ddev exec bin/console cache:clear
|
||||
|
||||
echo
|
||||
echo "Fertig: $URL"
|
||||
Reference in New Issue
Block a user