Bilder die in der original Webseite nicht online sind auskommentiert. Upload Skript leert auch den Cache
This commit is contained in:
@@ -9,3 +9,8 @@ BUNNY_STORAGE_PASSWORD=
|
|||||||
# Pull Zone -> CDN -> Security-Tab im Bunny.net Dashboard (Token Authentication)
|
# Pull Zone -> CDN -> Security-Tab im Bunny.net Dashboard (Token Authentication)
|
||||||
BUNNY_PULL_ZONE_URL=https://iwz-ferienwohnungen.b-cdn.net
|
BUNNY_PULL_ZONE_URL=https://iwz-ferienwohnungen.b-cdn.net
|
||||||
BUNNY_AUTH_KEY=
|
BUNNY_AUTH_KEY=
|
||||||
|
|
||||||
|
# Account-API-Key fuer den CDN-Cache-Purge nach dem Deploy.
|
||||||
|
# Dashboard -> oben rechts auf den Namen -> Account -> API -> "API Key".
|
||||||
|
# ACHTUNG: nicht der BUNNY_AUTH_KEY oben, sondern der Account-weite API-Key!
|
||||||
|
BUNNY_API_KEY=
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ bilder:
|
|||||||
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Wohnzimmer.jpg"
|
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Wohnzimmer.jpg"
|
||||||
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-schlafzimmer.jpg"
|
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-schlafzimmer.jpg"
|
||||||
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Kueche.jpg"
|
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Kueche.jpg"
|
||||||
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Badezimmer.jpg"
|
# - "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Badezimmer.jpg" # auf alter Live-Site nicht vorhanden
|
||||||
- "/images/fewo1/ferienwohnung-allgaeu-kaufbeuren-wohnung-1-wc-terrasse.jpg"
|
- "/images/fewo1/ferienwohnung-allgaeu-kaufbeuren-wohnung-1-wc-terrasse.jpg"
|
||||||
- "/images/fewo1/ferienwohnung-kaufbeuren-Wohnung1.jpg"
|
# - "/images/fewo1/ferienwohnung-kaufbeuren-Wohnung1.jpg" # auf alter Live-Site nicht vorhanden
|
||||||
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Skizze.jpg"
|
- "/images/fewo1/ferienwohnung-1-wolframm-kaufbeuren-Skizze.jpg"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ bilder:
|
|||||||
- "/images/fewo2/Wohnzimmer-TV-und-Schrank-fewo-2.jpg"
|
- "/images/fewo2/Wohnzimmer-TV-und-Schrank-fewo-2.jpg"
|
||||||
- "/images/fewo2/Essplatz-fewo-2.jpg"
|
- "/images/fewo2/Essplatz-fewo-2.jpg"
|
||||||
- "/images/fewo2/Wohnung-2-Kueche-frontal-1.jpg"
|
- "/images/fewo2/Wohnung-2-Kueche-frontal-1.jpg"
|
||||||
- "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-Kueche-Wohnzimmer.jpg"
|
# - "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-Kueche-Wohnzimmer.jpg" # auf alter Live-Site nicht vorhanden
|
||||||
- "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-Kueche-wohnung-mieten.jpg"
|
# - "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-Kueche-wohnung-mieten.jpg" # auf alter Live-Site nicht vorhanden
|
||||||
- "/images/fewo2/FeWo2-Bad-mit-Vorhang_2.jpg"
|
- "/images/fewo2/FeWo2-Bad-mit-Vorhang_2.jpg"
|
||||||
- "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-flur.jpg"
|
- "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-flur.jpg"
|
||||||
- "/images/fewo2/ferienwohnung-kaufbeuren-Wohnung2.jpg"
|
# - "/images/fewo2/ferienwohnung-kaufbeuren-Wohnung2.jpg" # auf alter Live-Site nicht vorhanden
|
||||||
- "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-skizze.jpg"
|
- "/images/fewo2/ferienwohnung-2-wolframm-kaufbeuren-skizze.jpg"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ import ftplib
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import urllib.error
|
||||||
|
import urllib.parse
|
||||||
|
import urllib.request
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
PROJECT_ROOT = Path(__file__).resolve().parent
|
PROJECT_ROOT = Path(__file__).resolve().parent
|
||||||
@@ -60,6 +63,39 @@ def deploy_to_bunny(host, zone, password):
|
|||||||
ftp_upload_dir(ftp, PUBLIC_DIR)
|
ftp_upload_dir(ftp, PUBLIC_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
def purge_cdn_cache(pull_zone_url, api_key):
|
||||||
|
"""Leert den Bunny CDN-Cache der Pull Zone per Wildcard-URL-Purge.
|
||||||
|
|
||||||
|
Ohne Purge liefert das CDN unveraenderte Dateinamen (z.B. /css/style.css)
|
||||||
|
weiter aus dem Cache -> online sieht man die alte Version.
|
||||||
|
"""
|
||||||
|
if not pull_zone_url or not api_key:
|
||||||
|
print("\n-> CDN-Purge uebersprungen "
|
||||||
|
"(BUNNY_PULL_ZONE_URL / BUNNY_API_KEY nicht gesetzt).")
|
||||||
|
print(" Cache ggf. manuell im Bunny-Dashboard leeren.")
|
||||||
|
return
|
||||||
|
|
||||||
|
wildcard = pull_zone_url.rstrip("/") + "/*"
|
||||||
|
query = urllib.parse.urlencode({"url": wildcard, "async": "false"})
|
||||||
|
url = f"https://api.bunny.net/purge?{query}"
|
||||||
|
print(f"\n-> CDN-Cache leeren: {wildcard}")
|
||||||
|
|
||||||
|
req = urllib.request.Request(url, method="POST")
|
||||||
|
req.add_header("AccessKey", api_key)
|
||||||
|
req.add_header("Accept", "application/json")
|
||||||
|
try:
|
||||||
|
with urllib.request.urlopen(req, timeout=60) as resp:
|
||||||
|
if resp.status == 200:
|
||||||
|
print(" Cache geleert.")
|
||||||
|
else:
|
||||||
|
print(f" WARNUNG: unerwarteter Status {resp.status}")
|
||||||
|
except urllib.error.HTTPError as e:
|
||||||
|
print(f" WARNUNG: Purge fehlgeschlagen (HTTP {e.code}). "
|
||||||
|
"Ist BUNNY_API_KEY der Account-API-Key?")
|
||||||
|
except urllib.error.URLError as e:
|
||||||
|
print(f" WARNUNG: Purge fehlgeschlagen ({e.reason}).")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print("=== IWZ Deploy ===")
|
print("=== IWZ Deploy ===")
|
||||||
|
|
||||||
@@ -67,6 +103,8 @@ if __name__ == "__main__":
|
|||||||
zone = env.get("BUNNY_STORAGE_ZONE")
|
zone = env.get("BUNNY_STORAGE_ZONE")
|
||||||
host = env.get("BUNNY_STORAGE_HOST", "storage.bunnycdn.com")
|
host = env.get("BUNNY_STORAGE_HOST", "storage.bunnycdn.com")
|
||||||
password = env.get("BUNNY_STORAGE_PASSWORD")
|
password = env.get("BUNNY_STORAGE_PASSWORD")
|
||||||
|
pull_zone_url = env.get("BUNNY_PULL_ZONE_URL")
|
||||||
|
api_key = env.get("BUNNY_API_KEY")
|
||||||
|
|
||||||
if not zone or not password:
|
if not zone or not password:
|
||||||
print("\nFEHLER: BUNNY_STORAGE_ZONE / BUNNY_STORAGE_PASSWORD fehlen.")
|
print("\nFEHLER: BUNNY_STORAGE_ZONE / BUNNY_STORAGE_PASSWORD fehlen.")
|
||||||
@@ -75,5 +113,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
hugo_build()
|
hugo_build()
|
||||||
deploy_to_bunny(host, zone, password)
|
deploy_to_bunny(host, zone, password)
|
||||||
|
purge_cdn_cache(pull_zone_url, api_key)
|
||||||
|
|
||||||
print("\nFertig! Seite ist live.")
|
print("\nFertig! Seite ist live.")
|
||||||
|
|||||||
Reference in New Issue
Block a user