Color mode

Cloudflare Workers 公開ガイド

Riebeckite で作った Site を Cloudflare Workers に公開する手順を説明します。

この Guide では、まず手元から直接 Deploy します。

全体の流れは次のとおりです。

Diagram source
text
flowchart LR
    Content["Riebeckite Site"]
    Build["riebeckite build"]
    Dist["dist/"]
    Wrangler["Wrangler"]
    Workers["Cloudflare Workers"]
    Public["公開Site"]
 
    Content --> Build
    Build --> Dist
    Dist --> Wrangler
    Wrangler --> Workers
    Workers --> Public

Riebeckite の通常の静的 Site では、Build で生成された dist/ を Cloudflare Workers の Static Assets として公開します。

前提

Site の Directory で、依存 Package をインストールします。

sh
npm install

その後、Riebeckite を Build します。

sh
npm exec riebeckite build

Build に成功すると、

text
dist/

が生成されます。

text
my-site/
├─ app/
├─ content/
├─ dist/               ← 公開する
├─ riebeckite.config.ts
└─ package.json

Cloudflare Workers へ公開するのは、この dist/ の内容です。

.riebeckite/ や Plugin Cache などの Build 時の状態は公開対象ではありません。

1. Cloudflare アカウントを作る

まだ Cloudflare アカウントを持っていない場合は、Cloudflare で作成します。

最初は無料枠で始められます。

アカウントを作成したら、次に Cloudflare Workers へ Deploy するための Wrangler を準備します。

2. Wrangler を用意する

create-riebeckite で Cloudflare Workers を選んだ Site には、Wrangler の依存と wrangler.jsonc が生成済みです。追加のインストールは不要で、次のセクションの設定もすでに済んでいます。

Not now で生成した Site や、手動で用意する場合は、Site の Directory で実行します。

sh
npm install -D wrangler

Wrangler は、Cloudflare Workers の開発や Deployment に利用する CLI です。インストールすると npx wrangler から実行できます。

3. wrangler.jsonc を作る

Cloudflare Workers へ何を Deploy するかを wrangler.jsonc で設定します。Site の Root に wrangler.jsonc を作り、次の内容を貼り付けてください。

jsonc
{
  "name": "my-riebeckite-site",
  "assets": {
    "directory": "./dist"
  }
}

--github-actions またはデプロイ設定で Cloudflare Workers を選んだ場合、このファイルは生成済みです。手動で公開する場合だけ作ります。npm exec riebeckite deploy は、このファイルが無ければ Site のフォルダ名から自動で作るため、内容を確認・編集したいときだけ手動で用意します。

name は、自分の Worker 名に変更します。

jsonc
"name": "my-riebeckite-site"

assets.directory は、

jsonc
"directory": "./dist"

のままにします。

これは、

text
Riebeckite
    ↓
dist/ を生成
    ↓
Wrangler
    ↓
dist/ を Static Assets として公開

という対応になっています。

incremental processing は riebeckite build を実行するローカル環境または GitHub Actions runner 上で行います。その後、Wrangler が新しく生成された dist/ を Workers Static Assets として upload します。Workers 自体が incremental build を実行するわけではありません。生成される GitHub Actions workflow が永続化するのは、この build 用の .riebeckite/cache と .riebeckite/build/content-state.json であり、dist/ ではありません。

4. Cloudflare にログインする

riebeckite deploy は、初回の実行時に Browser を開いて Cloudflare へのログインを促します。先にログインしておきたい場合や、Wrangler を直接使う場合は次のコマンドでもログインできます。

sh
npx wrangler login

Browser が開いたら、Cloudflare にログインして Wrangler からのアクセスを許可します。

これで手元から Cloudflare Workers へ Deploy できるようになります。

5. Site を公開する

まず Riebeckite を Build します。

sh
npm exec riebeckite build

続いて Deploy します。

sh
npm exec riebeckite deploy

riebeckite deploy は Wrangler を呼び出して dist/ を公開します。ログインが済んでいなければ先に Browser でログインし、wrangler.jsonc が無ければ自動で作ります。create-riebeckite で Cloudflare Workers を選び Deploy now? で Yes を選んだ場合は、この build と deploy が生成直後に自動で実行されます。Wrangler を直接使いたい場合は npx wrangler deploy でも同じです。

Diagram source
text
flowchart TD
    Build["npm exec riebeckite build"]
    Dist["dist/"]
    Deploy["npm exec riebeckite deploy"]
    Workers["Cloudflare Workers"]
 
    Build --> Dist
    Dist --> Deploy
    Deploy --> Workers

Deploy が成功すると、Wrangler に公開先の URL が表示されます。

たとえば、

text
https://<name>.<account>.workers.dev

のような URL です。

表示された URL を Browser で開き、Site が表示されれば最初の Deployment は成功です。

6. baseUrl を公開 URL に合わせる

最初の Deployment で Site の URL が分かったら、riebeckite.config.ts の baseUrl を実際の公開 URL に変更します。

ts
export default defineConfig({
  site: {
    baseUrl: "https://my-riebeckite-site.example.workers.dev",
  },
 
  // ...
});

baseUrl は Site の公開 URL を表します。

そのため、実際に公開する URL と一致させてください。

設定を変更したら、もう一度 Build します。

sh
npm exec riebeckite build

そして再度 Deploy します。

sh
npm exec riebeckite deploy

つまり、最初の公開では次のような流れになります。

Diagram source
text
flowchart TD
    FirstBuild["1. Build"]
    FirstDeploy["2. 最初のDeploy"]
    URL["3. 公開URLを確認"]
    BaseUrl["4. baseUrlを設定"]
    SecondBuild["5. 再Build"]
    SecondDeploy["6. 再Deploy"]
 
    FirstBuild --> FirstDeploy
    FirstDeploy --> URL
    URL --> BaseUrl
    BaseUrl --> SecondBuild
    SecondBuild --> SecondDeploy

7. 公開前に確認する

実際に Deploy せず、Cloudflare Workers 向けの設定を確認することもできます。

Dry Run

sh
npx wrangler deploy --dry-run

実際には公開せず、Deployment の準備内容を確認します。

「まだ本番へ出したくないが、Wrangler の設定に問題がないか確認したい」という場合に利用できます。

Wrangler Dev

sh
npx wrangler dev

Cloudflare Workers での公開時に近い状態を手元で確認できます。

通常の開発中は、

sh
npm exec riebeckite dev

を利用し、Cloudflare Workers 側での配信状態を確認したいときに、

sh
npx wrangler dev

を使う、と考えると分かりやすくなります。

text
普段の記事・Site開発
  → riebeckite dev
 
Cloudflareでの配信状態を確認
  → wrangler dev
 
実際に公開
  → riebeckite deploy

8. 更新した Site を再公開する

一度公開した後に記事や設定を変更した場合も、手順は同じです。

sh
npm exec riebeckite build
npm exec riebeckite deploy
text
Contentを変更
     ↓
Build
     ↓
dist/を更新
     ↓
Deploy

riebeckite deploy は Wrangler に dist/ を公開させるだけなので、Riebeckite の Content を再 Build しません。

そのため、Riebeckite 側を変更した場合は先に、

sh
npm exec riebeckite build

を実行します。

9. 公開前の確認手順

本番へ Deploy する前には、次の順で確認できます。

sh
npm exec riebeckite check
npm exec riebeckite doctor
npm exec riebeckite build
npm exec -- riebeckite deploy --dry-run
npm exec riebeckite deploy

それぞれの役割は次のとおりです。

Command 役割
riebeckite check Config や Plugin を検証
riebeckite doctor Site 全体の問題を診断
riebeckite build dist/ を生成
riebeckite deploy --dry-run Deployment 内容を確認(内部で Wrangler を呼び出す)
riebeckite deploy Cloudflare Workers へ公開

問題が起きた場合は、どの段階で失敗しているかを分けて確認します。

Diagram source
text
flowchart LR
    Check["check"]
    Doctor["doctor"]
    Build["build"]
    Dry["dry-run"]
    Deploy["deploy"]
 
    Check --> Doctor
    Doctor --> Build
    Build --> Dry
    Dry --> Deploy

Build と Deploy は別の処理

Riebeckite の Build と Cloudflare の Deploy は別の処理です。

text
Riebeckite
  → Siteを生成する
 
Wrangler
  → 生成されたSiteをCloudflareへ公開する

つまり、

text
npm exec riebeckite build

が失敗する場合は Riebeckite 側を確認し、

text
npm exec riebeckite deploy

が失敗する場合は Cloudflare / Wrangler 側を確認します。

この境界を分けて考えると、Deployment の問題を調査しやすくなります。

GitHub Actions で自動公開する

毎回、

sh
npm exec riebeckite build
npm exec riebeckite deploy

を手元で実行する代わりに、GitHub Actions から自動 Deploy することもできます。

Diagram source
text
flowchart LR
    Push["GitHubへpush"]
    Actions["GitHub Actions"]
    Build["Riebeckite Build"]
    Workers["Cloudflare Workers"]
 
    Push --> Actions
    Actions --> Build
    Build --> Workers

詳しい仕組みと設定は GitHub Actions を参照してください。

すでに手元から公開している Site は、Site の Directory で次を実行すると、継続デプロイへ移行できます。

sh
npm exec riebeckite deploy setup

.github/workflows/deploy.yml を作成し、CLOUDFLARE_API_TOKEN と CLOUDFLARE_ACCOUNT_ID を Repository Secret として登録したうえで、push を待ちます。

Site と Content が同じ Repository の場合

GitHub Actions 付きで Site を生成します。

sh
npx create-riebeckite my-site --github-actions

これによって、Cloudflare Workers 用の wrangler.jsonc と Deployment Workflow が生成されます。

その後は Site Repository の main への Push から、自動 Build・Deploy できます。

Content を別 Repository にする場合

Content と Site を別 Repository にする場合は、

sh
npx create-riebeckite my-site --github-actions \
  --content-repository OWNER/notes \
  --site-repository OWNER/my-site

のように生成できます。

この構成では、

text
OWNER/notes
  → Content Repository
 
OWNER/my-site
  → Site Repository

として分離します。

生成される構成では、

  • Content Repository を content/ へ Checkout
  • content-updated の repository_dispatch を受け取る Site Workflow
  • Content Repository 用の github/notify-site.yml

が用意されます。

github/notify-site.yml は Content Repository の、

text
.github/workflows/notify-site.yml

へコピーします。

外部 Content では「取得」と「通知」が必要

Content Repository を分離した場合は、

text
Contentを取得する

ことと、

text
Content更新時にSite Workflowを起動する

ことは別です。

Diagram source
text
flowchart LR
    Content["Content Repository"]
    Notify["notify-site.yml"]
    Dispatch["repository_dispatch"]
    Site["Site Workflow"]
    Checkout["Contentをcheckout"]
    Build["Build"]
    Deploy["Deploy"]
 
    Content --> Notify
    Notify --> Dispatch
    Dispatch --> Site
    Site --> Checkout
    Checkout --> Build
    Build --> Deploy

外部 Content Repository を Checkout する設定だけでは、Content Repository への Push から Site Workflow は起動しません。

Repository を分離する場合の詳しい設定は Separate Content Repository を参照してください。

よくある問題

dist/ がない

先に、

sh
npm exec riebeckite build

を実行してください。

Cloudflare Workers に公開する Static Assets は dist/ に生成されます。

Site を更新したのに公開内容が古い

変更後にもう一度、

sh
npm exec riebeckite build
npm exec riebeckite deploy

を実行します。

riebeckite deploy は Riebeckite の Build の代わりにはなりません。

公開後に URL が正しくない

riebeckite.config.ts の、

ts
site: {
  baseUrl: "...",
},

が実際の公開 URL と一致しているか確認します。

変更した場合は再度 Build・Deploy してください。

Riebeckite の Build で失敗する

sh
npm exec riebeckite check
npm exec riebeckite doctor

で Riebeckite 側の Config や Content を確認します。

Wrangler で失敗する

Riebeckite の build が成功しているなら、

sh
npx wrangler deploy --dry-run

で Wrangler 側の設定を確認します。

wrangler.jsonc の name と、

jsonc
"assets": {
  "directory": "./dist"
}

も確認してください。

まとめ

Riebeckite Site を Cloudflare Workers へ公開する最小手順は、

sh
npm exec riebeckite build
 
npm exec riebeckite deploy

です。create-riebeckite で Cloudflare Workers を選んだ Site は Wrangler を含んで生成されるため、npm install -D wrangler は不要です。Not now で生成した既存 Site では先に実行してください。

最初の Deployment 後に公開 URL が分かったら、

text
riebeckite.config.ts
      ↓
site.baseUrlを設定
      ↓
再Build
      ↓
再Deploy

します。

役割を整理すると、

text
riebeckite build
  → dist/を作る
 
wrangler dev
  → Cloudflareでの配信を手元で確認する
 
riebeckite deploy
  → dist/をCloudflare Workersへ公開する

となります。

自動 Deployment が必要になったら、手動 Deploy の仕組みを変えるのではなく、その一連の処理を GitHub Actions から実行する形に移行します。

次に読むもの

History

1 changesCollapseExpand
1 + # Cloudflare Workers 公開ガイド
2 +
3 + Riebeckite で作った Site を **Cloudflare Workers に公開する手順**を説明します。
4 +
5 + この Guide では、まず手元から直接 Deploy します。
6 +
7 + 全体の流れは次のとおりです。
8 +
9 + ```mermaid
10 + flowchart LR
11 + Content["Riebeckite Site"]
12 + Build["riebeckite build"]
13 + Dist["dist/"]
14 + Wrangler["Wrangler"]
15 + Workers["Cloudflare Workers"]
16 + Public["公開Site"]
17 +
18 + Content --> Build
19 + Build --> Dist
20 + Dist --> Wrangler
21 + Wrangler --> Workers
22 + Workers --> Public
23 + ```
24 +
25 + Riebeckite の通常の静的 Site では、Build で生成された `dist/` を Cloudflare Workers の Static Assets として公開します。
26 +
27 + ## 前提
28 +
29 + Site の Directory で、依存 Package をインストールします。
30 +
31 + ```sh
32 + npm install
33 + ```
34 +
35 + その後、Riebeckite を Build します。
36 +
37 + ```sh
38 + npm exec riebeckite build
39 + ```
40 +
41 + Build に成功すると、
42 +
43 + ```text
44 + dist/
45 + ```
46 +
47 + が生成されます。
48 +
49 + ```text
50 + my-site/
51 + ├─ app/
52 + ├─ content/
53 + ├─ dist/ ← 公開する
54 + ├─ riebeckite.config.ts
55 + └─ package.json
56 + ```
57 +
58 + Cloudflare Workers へ公開するのは、この `dist/` の内容です。
59 +
60 + `.riebeckite/` や Plugin Cache などの Build 時の状態は公開対象ではありません。
61 +
62 + ## 1. Cloudflare アカウントを作る
63 +
64 + まだ Cloudflare アカウントを持っていない場合は、[Cloudflare](https://www.cloudflare.com/) で作成します。
65 +
66 + 最初は無料枠で始められます。
67 +
68 + アカウントを作成したら、次に Cloudflare Workers へ Deploy するための Wrangler を準備します。
69 +
70 + ## 2. Wrangler を用意する
71 +
72 + `create-riebeckite` で `Cloudflare Workers` を選んだ Site には、Wrangler の依存と `wrangler.jsonc` が生成済みです。追加のインストールは不要で、次のセクションの設定もすでに済んでいます。
73 +
74 + `Not now` で生成した Site や、手動で用意する場合は、Site の Directory で実行します。
75 +
76 + ```sh
77 + npm install -D wrangler
78 + ```
79 +
80 + Wrangler は、Cloudflare Workers の開発や Deployment に利用する CLI です。インストールすると `npx wrangler` から実行できます。
81 +
82 + ## 3. `wrangler.jsonc` を作る
83 +
84 + Cloudflare Workers へ何を Deploy するかを `wrangler.jsonc` で設定します。Site の Root に `wrangler.jsonc` を作り、次の内容を貼り付けてください。
85 +
86 + ```jsonc
87 + {
88 + "name": "my-riebeckite-site",
89 + "assets": {
90 + "directory": "./dist"
91 + }
92 + }
93 + ```
94 +
95 + `--github-actions` またはデプロイ設定で `Cloudflare Workers` を選んだ場合、このファイルは生成済みです。手動で公開する場合だけ作ります。`npm exec riebeckite deploy` は、このファイルが無ければ Site のフォルダ名から自動で作るため、内容を確認・編集したいときだけ手動で用意します。
96 +
97 + `name` は、自分の Worker 名に変更します。
98 +
99 + ```jsonc
100 + "name": "my-riebeckite-site"
101 + ```
102 +
103 + `assets.directory` は、
104 +
105 + ```jsonc
106 + "directory": "./dist"
107 + ```
108 +
109 + のままにします。
110 +
111 + これは、
112 +
113 + ```text
114 + Riebeckite
115 + ↓
116 + dist/ を生成
117 + ↓
118 + Wrangler
119 + ↓
120 + dist/ を Static Assets として公開
121 + ```
122 +
123 + という対応になっています。
124 +
125 + incremental processing は `riebeckite build` を実行するローカル環境または GitHub Actions runner 上で行います。その後、Wrangler が新しく生成された `dist/` を Workers Static Assets として upload します。Workers 自体が incremental build を実行するわけではありません。生成される GitHub Actions workflow が永続化するのは、この build 用の `.riebeckite/cache` と `.riebeckite/build/content-state.json` であり、`dist/` ではありません。
126 +
127 + ## 4. Cloudflare にログインする
128 +
129 + `riebeckite deploy` は、初回の実行時に Browser を開いて Cloudflare へのログインを促します。先にログインしておきたい場合や、Wrangler を直接使う場合は次のコマンドでもログインできます。
130 +
131 + ```sh
132 + npx wrangler login
133 + ```
134 +
135 + Browser が開いたら、Cloudflare にログインして Wrangler からのアクセスを許可します。
136 +
137 + これで手元から Cloudflare Workers へ Deploy できるようになります。
138 +
139 + ## 5. Site を公開する
140 +
141 + まず Riebeckite を Build します。
142 +
143 + ```sh
144 + npm exec riebeckite build
145 + ```
146 +
147 + 続いて Deploy します。
148 +
149 + ```sh
150 + npm exec riebeckite deploy
151 + ```
152 +
153 + `riebeckite deploy` は Wrangler を呼び出して `dist/` を公開します。ログインが済んでいなければ先に Browser でログインし、`wrangler.jsonc` が無ければ自動で作ります。`create-riebeckite` で `Cloudflare Workers` を選び `Deploy now?` で `Yes` を選んだ場合は、この build と deploy が生成直後に自動で実行されます。Wrangler を直接使いたい場合は `npx wrangler deploy` でも同じです。
154 +
155 + ```mermaid
156 + flowchart TD
157 + Build["npm exec riebeckite build"]
158 + Dist["dist/"]
159 + Deploy["npm exec riebeckite deploy"]
160 + Workers["Cloudflare Workers"]
161 +
162 + Build --> Dist
163 + Dist --> Deploy
164 + Deploy --> Workers
165 + ```
166 +
167 + Deploy が成功すると、Wrangler に公開先の URL が表示されます。
168 +
169 + たとえば、
170 +
171 + ```text
172 + https://<name>.<account>.workers.dev
173 + ```
174 +
175 + のような URL です。
176 +
177 + 表示された URL を Browser で開き、Site が表示されれば最初の Deployment は成功です。
178 +
179 + ## 6. `baseUrl` を公開 URL に合わせる
180 +
181 + 最初の Deployment で Site の URL が分かったら、`riebeckite.config.ts` の `baseUrl` を実際の公開 URL に変更します。
182 +
183 + ```ts
184 + export default defineConfig({
185 + site: {
186 + baseUrl: "https://my-riebeckite-site.example.workers.dev",
187 + },
188 +
189 + // ...
190 + });
191 + ```
192 +
193 + `baseUrl` は Site の公開 URL を表します。
194 +
195 + そのため、実際に公開する URL と一致させてください。
196 +
197 + 設定を変更したら、もう一度 Build します。
198 +
199 + ```sh
200 + npm exec riebeckite build
201 + ```
202 +
203 + そして再度 Deploy します。
204 +
205 + ```sh
206 + npm exec riebeckite deploy
207 + ```
208 +
209 + つまり、最初の公開では次のような流れになります。
210 +
211 + ```mermaid
212 + flowchart TD
213 + FirstBuild["1. Build"]
214 + FirstDeploy["2. 最初のDeploy"]
215 + URL["3. 公開URLを確認"]
216 + BaseUrl["4. baseUrlを設定"]
217 + SecondBuild["5. 再Build"]
218 + SecondDeploy["6. 再Deploy"]
219 +
220 + FirstBuild --> FirstDeploy
221 + FirstDeploy --> URL
222 + URL --> BaseUrl
223 + BaseUrl --> SecondBuild
224 + SecondBuild --> SecondDeploy
225 + ```
226 +
227 + ## 7. 公開前に確認する
228 +
229 + 実際に Deploy せず、Cloudflare Workers 向けの設定を確認することもできます。
230 +
231 + ### Dry Run
232 +
233 + ```sh
234 + npx wrangler deploy --dry-run
235 + ```
236 +
237 + 実際には公開せず、Deployment の準備内容を確認します。
238 +
239 + 「まだ本番へ出したくないが、Wrangler の設定に問題がないか確認したい」という場合に利用できます。
240 +
241 + ### Wrangler Dev
242 +
243 + ```sh
244 + npx wrangler dev
245 + ```
246 +
247 + Cloudflare Workers での公開時に近い状態を手元で確認できます。
248 +
249 + 通常の開発中は、
250 +
251 + ```sh
252 + npm exec riebeckite dev
253 + ```
254 +
255 + を利用し、Cloudflare Workers 側での配信状態を確認したいときに、
256 +
257 + ```sh
258 + npx wrangler dev
259 + ```
260 +
261 + を使う、と考えると分かりやすくなります。
262 +
263 + ```text
264 + 普段の記事・Site開発
265 + → riebeckite dev
266 +
267 + Cloudflareでの配信状態を確認
268 + → wrangler dev
269 +
270 + 実際に公開
271 + → riebeckite deploy
272 + ```
273 +
274 + ## 8. 更新した Site を再公開する
275 +
276 + 一度公開した後に記事や設定を変更した場合も、手順は同じです。
277 +
278 + ```sh
279 + npm exec riebeckite build
280 + npm exec riebeckite deploy
281 + ```
282 +
283 + ```text
284 + Contentを変更
285 + ↓
286 + Build
287 + ↓
288 + dist/を更新
289 + ↓
290 + Deploy
291 + ```
292 +
293 + `riebeckite deploy` は Wrangler に `dist/` を公開させるだけなので、Riebeckite の Content を再 Build しません。
294 +
295 + そのため、Riebeckite 側を変更した場合は先に、
296 +
297 + ```sh
298 + npm exec riebeckite build
299 + ```
300 +
301 + を実行します。
302 +
303 + ## 9. 公開前の確認手順
304 +
305 + 本番へ Deploy する前には、次の順で確認できます。
306 +
307 + ```sh
308 + npm exec riebeckite check
309 + npm exec riebeckite doctor
310 + npm exec riebeckite build
311 + npm exec -- riebeckite deploy --dry-run
312 + npm exec riebeckite deploy
313 + ```
314 +
315 + それぞれの役割は次のとおりです。
316 +
317 + | Command | 役割 |
318 + | --- | --- |
319 + | `riebeckite check` | Config や Plugin を検証 |
320 + | `riebeckite doctor` | Site 全体の問題を診断 |
321 + | `riebeckite build` | `dist/` を生成 |
322 + | `riebeckite deploy --dry-run` | Deployment 内容を確認(内部で Wrangler を呼び出す) |
323 + | `riebeckite deploy` | Cloudflare Workers へ公開 |
324 +
325 + 問題が起きた場合は、どの段階で失敗しているかを分けて確認します。
326 +
327 + ```mermaid
328 + flowchart LR
329 + Check["check"]
330 + Doctor["doctor"]
331 + Build["build"]
332 + Dry["dry-run"]
333 + Deploy["deploy"]
334 +
335 + Check --> Doctor
336 + Doctor --> Build
337 + Build --> Dry
338 + Dry --> Deploy
339 + ```
340 +
341 + ## Build と Deploy は別の処理
342 +
343 + Riebeckite の Build と Cloudflare の Deploy は別の処理です。
344 +
345 + ```text
346 + Riebeckite
347 + → Siteを生成する
348 +
349 + Wrangler
350 + → 生成されたSiteをCloudflareへ公開する
351 + ```
352 +
353 + つまり、
354 +
355 + ```text
356 + npm exec riebeckite build
357 + ```
358 +
359 + が失敗する場合は Riebeckite 側を確認し、
360 +
361 + ```text
362 + npm exec riebeckite deploy
363 + ```
364 +
365 + が失敗する場合は Cloudflare / Wrangler 側を確認します。
366 +
367 + この境界を分けて考えると、Deployment の問題を調査しやすくなります。
368 +
369 + ## GitHub Actions で自動公開する
370 +
371 + 毎回、
372 +
373 + ```sh
374 + npm exec riebeckite build
375 + npm exec riebeckite deploy
376 + ```
377 +
378 + を手元で実行する代わりに、GitHub Actions から自動 Deploy することもできます。
379 +
380 + ```mermaid
381 + flowchart LR
382 + Push["GitHubへpush"]
383 + Actions["GitHub Actions"]
384 + Build["Riebeckite Build"]
385 + Workers["Cloudflare Workers"]
386 +
387 + Push --> Actions
388 + Actions --> Build
389 + Build --> Workers
390 + ```
391 +
392 + 詳しい仕組みと設定は [GitHub Actions](./github-actions.ja.md) を参照してください。
393 +
394 + すでに手元から公開している Site は、Site の Directory で次を実行すると、継続デプロイへ移行できます。
395 +
396 + ```sh
397 + npm exec riebeckite deploy setup
398 + ```
399 +
400 + `.github/workflows/deploy.yml` を作成し、`CLOUDFLARE_API_TOKEN` と `CLOUDFLARE_ACCOUNT_ID` を Repository Secret として登録したうえで、push を待ちます。
401 +
402 + ## Site と Content が同じ Repository の場合
403 +
404 + GitHub Actions 付きで Site を生成します。
405 +
406 + ```sh
407 + npx create-riebeckite my-site --github-actions
408 + ```
409 +
410 + これによって、Cloudflare Workers 用の `wrangler.jsonc` と Deployment Workflow が生成されます。
411 +
412 + その後は Site Repository の `main` への Push から、自動 Build・Deploy できます。
413 +
414 + ## Content を別 Repository にする場合
415 +
416 + Content と Site を別 Repository にする場合は、
417 +
418 + ```sh
419 + npx create-riebeckite my-site --github-actions \
420 + --content-repository OWNER/notes \
421 + --site-repository OWNER/my-site
422 + ```
423 +
424 + のように生成できます。
425 +
426 + この構成では、
427 +
428 + ```text
429 + OWNER/notes
430 + → Content Repository
431 +
432 + OWNER/my-site
433 + → Site Repository
434 + ```
435 +
436 + として分離します。
437 +
438 + 生成される構成では、
439 +
440 + - Content Repository を `content/` へ Checkout
441 + - `content-updated` の `repository_dispatch` を受け取る Site Workflow
442 + - Content Repository 用の `github/notify-site.yml`
443 +
444 + が用意されます。
445 +
446 + `github/notify-site.yml` は Content Repository の、
447 +
448 + ```text
449 + .github/workflows/notify-site.yml
450 + ```
451 +
452 + へコピーします。
453 +
454 + ## 外部 Content では「取得」と「通知」が必要
455 +
456 + Content Repository を分離した場合は、
457 +
458 + ```text
459 + Contentを取得する
460 + ```
461 +
462 + ことと、
463 +
464 + ```text
465 + Content更新時にSite Workflowを起動する
466 + ```
467 +
468 + ことは別です。
469 +
470 + ```mermaid
471 + flowchart LR
472 + Content["Content Repository"]
473 + Notify["notify-site.yml"]
474 + Dispatch["repository_dispatch"]
475 + Site["Site Workflow"]
476 + Checkout["Contentをcheckout"]
477 + Build["Build"]
478 + Deploy["Deploy"]
479 +
480 + Content --> Notify
481 + Notify --> Dispatch
482 + Dispatch --> Site
483 + Site --> Checkout
484 + Checkout --> Build
485 + Build --> Deploy
486 + ```
487 +
488 + 外部 Content Repository を Checkout する設定だけでは、Content Repository への Push から Site Workflow は起動しません。
489 +
490 + Repository を分離する場合の詳しい設定は [Separate Content Repository](./separate-content-repository.ja.md) を参照してください。
491 +
492 + ## よくある問題
493 +
494 + ### `dist/` がない
495 +
496 + 先に、
497 +
498 + ```sh
499 + npm exec riebeckite build
500 + ```
501 +
502 + を実行してください。
503 +
504 + Cloudflare Workers に公開する Static Assets は `dist/` に生成されます。
505 +
506 + ### Site を更新したのに公開内容が古い
507 +
508 + 変更後にもう一度、
509 +
510 + ```sh
511 + npm exec riebeckite build
512 + npm exec riebeckite deploy
513 + ```
514 +
515 + を実行します。
516 +
517 + `riebeckite deploy` は Riebeckite の Build の代わりにはなりません。
518 +
519 + ### 公開後に URL が正しくない
520 +
521 + `riebeckite.config.ts` の、
522 +
523 + ```ts
524 + site: {
525 + baseUrl: "...",
526 + },
527 + ```
528 +
529 + が実際の公開 URL と一致しているか確認します。
530 +
531 + 変更した場合は再度 Build・Deploy してください。
532 +
533 + ### Riebeckite の Build で失敗する
534 +
535 + ```sh
536 + npm exec riebeckite check
537 + npm exec riebeckite doctor
538 + ```
539 +
540 + で Riebeckite 側の Config や Content を確認します。
541 +
542 + ### Wrangler で失敗する
543 +
544 + Riebeckite の `build` が成功しているなら、
545 +
546 + ```sh
547 + npx wrangler deploy --dry-run
548 + ```
549 +
550 + で Wrangler 側の設定を確認します。
551 +
552 + `wrangler.jsonc` の `name` と、
553 +
554 + ```jsonc
555 + "assets": {
556 + "directory": "./dist"
557 + }
558 + ```
559 +
560 + も確認してください。
561 +
562 + ## まとめ
563 +
564 + Riebeckite Site を Cloudflare Workers へ公開する最小手順は、
565 +
566 + ```sh
567 + npm exec riebeckite build
568 +
569 + npm exec riebeckite deploy
570 + ```
571 +
572 + です。`create-riebeckite` で `Cloudflare Workers` を選んだ Site は Wrangler を含んで生成されるため、`npm install -D wrangler` は不要です。`Not now` で生成した既存 Site では先に実行してください。
573 +
574 + 最初の Deployment 後に公開 URL が分かったら、
575 +
576 + ```text
577 + riebeckite.config.ts
578 + ↓
579 + site.baseUrlを設定
580 + ↓
581 + 再Build
582 + ↓
583 + 再Deploy
584 + ```
585 +
586 + します。
587 +
588 + 役割を整理すると、
589 +
590 + ```text
591 + riebeckite build
592 + → dist/を作る
593 +
594 + wrangler dev
595 + → Cloudflareでの配信を手元で確認する
596 +
597 + riebeckite deploy
598 + → dist/をCloudflare Workersへ公開する
599 + ```
600 +
601 + となります。
602 +
603 + 自動 Deployment が必要になったら、手動 Deploy の仕組みを変えるのではなく、その一連の処理を [GitHub Actions](./github-actions.ja.md) から実行する形に移行します。
604 +
605 + ### 次に読むもの
606 +
607 + - [サイト公開までの最短ガイド](../../getting-started/deployment.ja.md) — 初回公開までの最短手順
608 + - [GitHub Actions](./github-actions.ja.md) — GitHub への Push から自動公開する
609 + - [Separate Content Repository](./separate-content-repository.ja.md) — Content と Site を別 Repository で運用する
610 + - [CLI](../../reference/cli.ja.md) — `build`、`check`、`doctor` などの Command
611 +