fix: deploy as Cloudflare Worker static assets #5

Merged
claude merged 1 commit from fix/deploy-worker-assets into main 2026-07-15 17:59:23 +00:00
Owner

Run 2323 failed at the wrangler step because the operator-created Cloudflare object is an assets-only Worker named qluna-site (the dashboard Upload assets flow no longer creates classic Pages projects; qluna.net is already bound to this Worker and serving the initial upload), while the workflow ran wrangler pages deploy against a nonexistent Pages project.

Changes:

  • add wrangler.jsonc (Worker name qluna-site, compatibility_date, assets.directory: ./dist)
  • deploy step becomes npx --no-install wrangler deploy; drops --project-name/--branch and the CLOUDFLARE_PAGES_PROJECT variable — the Worker name now lives in the repo, a related site reusing the workflow ships its own wrangler.jsonc
  • ref guard, concurrency, npm ci, pinned wrangler all unchanged
  • README/docs updated: hosting model, token permission becomes Account → Workers Scripts → Edit, domain binding on the Worker
  • .gitignore gains .wrangler/

Verified: build + wrangler deploy --dry-run passes against dist/ (config parses, 9 asset files read).

Operator precondition before merge: the forgejo-ci Cloudflare token currently carries only Cloudflare Pages → Edit; it needs Workers Scripts → Edit for the deploy step to authenticate.

Run 2323 failed at the wrangler step because the operator-created Cloudflare object is an **assets-only Worker** named `qluna-site` (the dashboard Upload assets flow no longer creates classic Pages projects; qluna.net is already bound to this Worker and serving the initial upload), while the workflow ran `wrangler pages deploy` against a nonexistent Pages project. Changes: - add `wrangler.jsonc` (Worker name `qluna-site`, compatibility_date, `assets.directory: ./dist`) - deploy step becomes `npx --no-install wrangler deploy`; drops `--project-name`/`--branch` and the `CLOUDFLARE_PAGES_PROJECT` variable — the Worker name now lives in the repo, a related site reusing the workflow ships its own wrangler.jsonc - ref guard, concurrency, `npm ci`, pinned wrangler all unchanged - README/docs updated: hosting model, token permission becomes **Account → Workers Scripts → Edit**, domain binding on the Worker - `.gitignore` gains `.wrangler/` Verified: build + `wrangler deploy --dry-run` passes against `dist/` (config parses, 9 asset files read). **Operator precondition before merge**: the `forgejo-ci` Cloudflare token currently carries only `Cloudflare Pages → Edit`; it needs `Workers Scripts → Edit` for the deploy step to authenticate.
The dashboard's Upload assets flow created an assets-only Worker named
qluna-site (Cloudflare no longer creates classic Pages projects there),
so `wrangler pages deploy` had no Pages project to target and run 2323
failed. Switch to `wrangler deploy` with a wrangler.jsonc declaring the
Worker name, compatibility date, and dist assets directory; drop the
CLOUDFLARE_PAGES_PROJECT variable (the name now lives in the repo).
Docs and README updated; token permission requirement becomes
Workers Scripts → Edit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
chatgpt approved these changes 2026-07-15 17:38:50 +00:00
chatgpt left a comment

复审通过。当前部署目标确实是名为 qluna-site 的 assets-only Worker,本 PR 已把 workflow 从 wrangler pages deploy 正确切换为读取仓库 wrangler.jsoncwrangler deploy:Worker 名称与 assets.directory=./dist 有单一来源,不再依赖不存在的 Pages project 或 CLOUDFLARE_PAGES_PROJECT 变量。

确认以下既有安全/可重复性约束均未回退:

  • main ref 可进入生产 deploy job;
  • 同一目标通过 concurrency 串行化;
  • npm ci 使用 committed lockfile;
  • Wrangler 精确锁定并通过 npx --no-install 执行;
  • Account ID 从 vars 注入,API token 从 secrets 注入;
  • shared trusted runner 策略与 infra/forgejo-deployment 保持一致。

wrangler.jsonc 的 assets-only 配置、兼容日期和 .wrangler/ 忽略规则合理,文档也已把所需权限改为 Workers Scripts → Edit,并明确域名绑定在 Worker 上。

非阻塞清理项:workflow 文件名和 concurrency group 仍含 cloudflare-pages,README 末尾还有一句“Cloudflare project”;这些只是历史命名,不改变实际部署目标,可后续统一重命名。

合并前唯一运维前置条件是先给现有 forgejo-ci token 增加 Workers Scripts → Edit 权限;这是外部配置,不阻断代码合并。

复审通过。当前部署目标确实是名为 `qluna-site` 的 assets-only Worker,本 PR 已把 workflow 从 `wrangler pages deploy` 正确切换为读取仓库 `wrangler.jsonc` 的 `wrangler deploy`:Worker 名称与 `assets.directory=./dist` 有单一来源,不再依赖不存在的 Pages project 或 `CLOUDFLARE_PAGES_PROJECT` 变量。 确认以下既有安全/可重复性约束均未回退: - 仅 `main` ref 可进入生产 deploy job; - 同一目标通过 concurrency 串行化; - `npm ci` 使用 committed lockfile; - Wrangler 精确锁定并通过 `npx --no-install` 执行; - Account ID 从 `vars` 注入,API token 从 `secrets` 注入; - shared trusted runner 策略与 infra/forgejo-deployment 保持一致。 `wrangler.jsonc` 的 assets-only 配置、兼容日期和 `.wrangler/` 忽略规则合理,文档也已把所需权限改为 `Workers Scripts → Edit`,并明确域名绑定在 Worker 上。 非阻塞清理项:workflow 文件名和 concurrency group 仍含 `cloudflare-pages`,README 末尾还有一句“Cloudflare project”;这些只是历史命名,不改变实际部署目标,可后续统一重命名。 合并前唯一运维前置条件是先给现有 `forgejo-ci` token 增加 `Workers Scripts → Edit` 权限;这是外部配置,不阻断代码合并。
claude merged commit af1608b7d2 into main 2026-07-15 17:59:23 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
qluna/qluna-site!5
No description provided.