Skip to main content

deploy

Deploy yopedia to Cloudflare using wrangler CLI

インストールへ移動

ソース情報

リポジトリ
yologdev/yopedia
ソースの最終更新活動
2026年5月2日 21:27
検出された SKILL.md の言語
英語
スター
69
フォーク
13

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
deploy
description
Deploy yopedia to Cloudflare using wrangler CLI
tools
["bash","read_file","write_file","edit_file"]
# Deploy You can provision and deploy yopedia infrastructure on Cloudflare using the wrangler CLI. All commands run via `npx wrangler` (no global install needed). ## Cloudflare Services | Service | Purpose | Provisioning | |---------|---------|-------------| | **Pages** | Frontend + Workers (Nitro) | `wrangler pages project create yopedia` | | **R2** | Markdown file storage (source of truth) | `wrangler r2 bucket create yopedia-wiki` | | **KV** | Derived indexes (search, metadata cache) | `wrangler kv namespace create SEARCH_INDEX` | | **Vectorize** | Semantic search embeddings | `wrangler vectorize create yopedia-embeddings --dimensions 1536 --metric cosine` | ## Key Principle **Markdown files in R2 are the source of truth.** KV and Vectorize hold derived projections that can be rebuilt from the markdown at any time. Never treat a database as canonical — R2 IS the filesystem. ## wrangler.toml The deployment config lives at the project root: ```toml name = "yopedia" compatibility_date = "2025-01-01" pages_build_output_dir = ".output/public" [[r2_buckets]] binding = "R2" bucket_name = "yopedia-wiki" [[kv_namespaces]] binding = "KV" id = "<namespace-id>" [[vectorize]] binding = "VECTORIZE" index_name = "yopedia-embeddings" ``` After creating KV namespace, `wrangler` prints the namespace ID. Update `wrangler.toml` with it. ## Provisioning Commands ```bash # Create all resources (idempotent — safe to re-run) npx wrangler r2 bucket create yopedia-wiki 2>/dev/null || true npx wrangler kv namespace create SEARCH_INDEX npx wrangler vectorize create yopedia-embeddings \ --dimensions 1536 --metric cosine 2>/dev/null || true npx wrangler pages project create yopedia \ --production-branch main 2>/dev/null || true ``` ## Deploying ```bash pnpm build npx wrangler pages deploy .output/public --project-name yopedia ``` For preview deployments (PRs): ```bash npx wrangler pages deploy .output/public \ --project-name yopedia \ --branch "$BRANCH_NAME" ``` ## Data Migration Upload existing wiki files to R2: ```bash # Upload all wiki pages for f in wiki/*.md; do slug=$(basename "$f") npx wrangler r2 object put "yopedia-wiki/wiki/$slug" --file "$f" done # Upload raw source files for f in raw/*.md; do slug=$(basename "$f") npx wrangler r2 object put "yopedia-wiki/raw/$slug" --file "$f" done # Upload revision history find wiki/.revisions -name '*.md' | while read f; do key=$(echo "$f" | sed 's|wiki/.revisions/|revisions/|') npx wrangler r2 object put "yopedia-wiki/$key" --file "$f" done ``` ## Rebuilding Derived Indexes If KV search index is corrupted or stale, rebuild from R2: ```bash # List all wiki pages in R2 npx wrangler r2 object list yopedia-wiki --prefix "wiki/" \ | jq -r '.[] | .key' ``` Then re-index each page through the app's search index endpoint. ## Environment Variables Required in CI (GitHub Actions secrets): - `CLOUDFLARE_API_TOKEN` — wrangler auth - `CLOUDFLARE_ACCOUNT_ID` — account identifier For local dev: ```bash npx wrangler login # browser-based OAuth, stores token locally ``` ## Concurrency R2 supports conditional puts via ETags for optimistic concurrency: ```typescript const obj = await R2.get('wiki/index.md'); const etag = obj.httpEtag; const updated = modifyContent(await obj.text()); await R2.put('wiki/index.md', updated, { onlyIf: { etagMatches: etag } }); // Retry on ETag mismatch ``` Use this for shared files (index.md, log.md) instead of in-process locks. ## Local Development Miniflare emulates R2/KV/Vectorize locally: ```bash npx wrangler dev # starts local server with emulated bindings npx wrangler pages dev # for Pages projects ``` All R2/KV operations work locally without a Cloudflare account. ## Rules - Never store wiki content in D1 or KV as primary storage — R2 only. - KV indexes are disposable projections. Design for rebuild-from-R2. - Always run `pnpm build` before deploying. - Use `--branch` for preview deploys, never push untested code to production. - Check `wrangler.toml` binding IDs match actual provisioned resources. - After provisioning KV, update `wrangler.toml` with the namespace ID from output.
GitHubで見る