4.7 KiB
Prompt: automatyczne wdrażanie aplikacji do Cloudflare Pages
Chcę przygotować i wdrożyć tę aplikację webową do Cloudflare Pages.
Pracuj bez GitHuba — użyj lokalnego repozytorium Git oraz Wrangler CLI.
Wymagania
-
Przeanalizuj projekt i ustal:
- gdzie znajduje się główny plik aplikacji,
- jakie pliki są potrzebne do uruchomienia strony,
- czy projekt ma repozytorium Git,
- jaki jest aktualny remote Git,
- czy istnieje folder przeznaczony do publikacji.
-
Przygotuj folder wdrożeniowy, np.
wersja1albodist.Folder powinien zawierać wyłącznie pliki potrzebne do działania aplikacji:
index.html,- pliki CSS,
- pliki JavaScript,
- pliki CSV/JSON,
- obrazy i inne używane zasoby.
-
Jeśli aplikacja korzysta z plików znajdujących się poza folderem wdrożeniowym, przygotuj synchronizację. Przed każdym wdrożeniem kopiuj aktualne pliki źródłowe do folderu publikacji, aby lokalna i opublikowana wersja nie różniły się.
-
Skonfiguruj Cloudflare Pages przez Wrangler:
- bez GitHuba,
- bez GitHub Actions,
- użyj istniejącego projektu Pages, jeśli istnieje,
- jeśli projekt nie istnieje, przygotuj polecenie jego utworzenia.
-
Przygotuj skrypt
deploy-cloudflare.ps1, który:- wskazuje folder wdrożeniowy,
- synchronizuje pliki źródłowe,
- używa
wrangler.cmd, a niewrangler.ps1, - działa przy zablokowanej polityce wykonywania skryptów PowerShell,
- automatycznie dodaje
C:\Program Files\nodejsdo PATH, jeśli Node.js jest zainstalowany, - pobiera nazwę projektu Cloudflare z lokalnej konfiguracji Git,
- obsługuje opcjonalny Cloudflare Account ID,
- jasno zgłasza błędy.
-
Nie zapisuj tokenów Cloudflare w kodzie ani w repozytorium.
Logowanie powinno używać:
& "$env:APPDATA\npm\wrangler.cmd" loginJeśli Node.js lub Wrangler nie są dostępne:
- sprawdź instalację Node.js,
- zainstaluj Node.js LTS,
- zainstaluj Wrangler,
- sprawdź działanie poleceniem:
& "$env:APPDATA\npm\wrangler.cmd" --version -
Przygotuj instalator
install-cloudflare-hook.ps1, który:- instaluje hook w
.git/hooks, - ustawia lokalne
core.hooksPath, - nadaje hookowi prawa wykonywania,
- działa na Windows,
- uruchamia wdrożenie automatycznie przed każdym
git push.
Użyj hooka
pre-push, ponieważpost-pushmoże nie być wykonywany poprawnie przez Git for Windows. - instaluje hook w
-
Przygotuj plik
hooks/pre-push, który:- uruchamia
deploy-cloudflare.ps1, - zatrzymuje push, jeśli wdrożenie się nie powiedzie,
- wyświetla komunikaty:
Cloudflare Pages: wdrażanie przed pushem… Cloudflare Pages: wdrożenie zakończone - uruchamia
-
Przygotuj instrukcję uruchomienia:
Set-Location "ŚCIEŻKA_DO_PROJEKTU"& "$env:APPDATA\npm\wrangler.cmd" loginSprawdź projekty:
& "$env:APPDATA\npm\wrangler.cmd" pages project list --jsonUstaw nazwę projektu:
git config --local cloudflare.pagesProject "NAZWA_PROJEKTU"Opcjonalnie ustaw Account ID:
git config --local cloudflare.accountId "ACCOUNT_ID"Zainstaluj hook:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File ".\install-cloudflare-hook.ps1"Wykonaj pierwszy deploy:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File ".\deploy-cloudflare.ps1" -
Po wdrożeniu sprawdź:
- czy Cloudflare utworzył nowy deployment,
- jaki jest adres
*.pages.dev, - czy aplikacja działa w przeglądarce,
- czy aktualne zmiany są widoczne,
- czy folder wdrożeniowy zawiera właściwe pliki.
Historię deploymentów sprawdź poleceniem:
& "$env:APPDATA\npm\wrangler.cmd" pages deployment list --project-name "NAZWA_PROJEKTU" --json -
Wykonaj test końcowy:
git add . git commit -m "Konfiguracja automatycznego wdrażania Cloudflare" git push origin mainPotwierdź, że przed pushem uruchomił się Wrangler i że Cloudflare utworzył nowy deployment.
-
Jeśli
git pushnie działa:- sprawdź osobno uwierzytelnienie do repozytorium Git,
- nie zakładaj, że problem dotyczy Cloudflare,
- jeśli push jest niemożliwy, wykonaj tymczasowy deploy bezpośrednio przez Wrangler,
- wyraźnie poinformuj, że lokalny commit może istnieć, ale nie być wysłany do zdalnego repozytorium.
Pracuj samodzielnie, wykonuj zmiany w plikach, testuj je i nie kończ zadania na samej instrukcji. Nie twórz GitHuba ani GitHub Actions, chyba że użytkownik wyraźnie o to poprosi.