Nasazení na Cloudflare Pages

Web je statický: hra, presety laboratoře, dokumentace jako HTML, data experimentů a tiskové PDF. Sestaví ho GitHub Actions (.github/workflows/pages.yml) a nahraje na Cloudflare Pages přes wrangler.

Událost Co se stane
push do main testy, build s PDF, nasazení do produkce
pull request z tohoto repozitáře totéž jako náhled; odkaz se objeví v komentáři u PR
pull request z forku jen testy a build (fork nemá přístup k secrets)
ruční spuštění (Actions → Pages → Run workflow) nasazení vybrané větve jako náhled, u main do produkce

Bez nastavených secrets workflow web sestaví a přiloží jako artefakt site, ale nenasadí ho; v přehledu běhu je o tom upozornění.

Jednorázové nastavení

  1. Pages projekt. V Cloudflare dashboardu: Workers & Pages → Create → Pages → Upload assets (Direct Upload), název coopgame, produkční větev main. Nebo z terminálu:
    npx wrangler login
    npx wrangler pages project create coopgame --production-branch=main
    
    Jiný název projektu nastavte jako proměnnou repozitáře: gh variable set CLOUDFLARE_PROJECT_NAME --body muj-nazev.
  2. API token. My Profile → API Tokens → Create Token → Custom token, oprávnění Account → Cloudflare Pages → Edit, omezit na váš účet. Účet má Account ID na přehledu Workers & Pages (pravý panel).
  3. Secrets v GitHubu:
    gh secret set CLOUDFLARE_API_TOKEN      # vložte token
    gh secret set CLOUDFLARE_ACCOUNT_ID     # vložte Account ID
    
  4. Push do main nebo Run workflow. Produkční adresa je https://coopgame.pages.dev (podle názvu projektu), náhledy https://<větev>.coopgame.pages.dev. Vlastní doménu přidáte v nastavení projektu v Cloudflare.

Lokálně

npm run build          # dist/: hra, dokumentace, data, _headers, _redirects
npm run build:pdf      # dist/print/*.pdf, potřebuje Python s reportlab (PYTHON=… a FONT=… volitelně)
npm run preview        # servíruje dist/ na http://localhost:5173

_headers nastavuje přísnou Content-Security-Policy (jen vlastní skripty, styly a worker), nosniff a krátkou cache modulů, protože soubory nemají v názvu hash. _redirects přesměruje starou adresu /tabletop.html na /. Build sám ověří, že v dist/ je každý modul, který stránka a worker importují; test test/build.test.js hlídá, že do webu neunikne nic mimo hru (testy, skripty, node_modules, zdrojové .md).