このサイトは非公式の日本語訳です。Cloudflare・EmDashプロジェクトが運営するサイトではありません。

このページで決めること:問題が起きたときに、サイトのどの部分を、どこまで戻せるようにしておくか

決める前に知っておくこと

EmDashのサイトは、「コード」と「コンテンツ」を別々の場所に保存します。コード(Astroのページ、設定、プラグイン)はファイルとして、コンテンツ(記事、設定、ユーザー)はデータベースに入ります。そのため、履歴の持ち方も2つを分けて考えます。

戻したいもの 標準で用意されている仕組み
1ページの本文 EmDashのリビジョン(管理画面の表記は「変更履歴」)
データベース全体 Cloudflare D1のTime Travel(有料プランで30日前まで、無料プランで7日前まで)
動いているコード Cloudflare Workersのロールバック(直近100版)
コードの元のファイル なし

Workersのロールバックで戻るのは、Cloudflareにデプロイ済みのコードだけです。つながっているD1やR2などのリソースは変わりません。元のファイル(ソース)も戻らないため、ソースを戻したい場合は別の保管場所が要ります。

公式テンプレートの .gitignore には、.env.dev.vars(秘密の値を書くファイル)と、ビルド時に作られる .emdash/migrations.json が最初から入っています。Gitでコードを保管する場合も、これらはリポジトリに入りません。

選択肢の比較

A. 標準機能のみ B. Gitでコードを保管 C. Git+自動デプロイ D. コンテンツもGitに持つ
概要 リビジョン、Time Travel、Workersのロールバックだけで運用する Aに加え、コードをGitのリポジトリ(GitHubなど)に保管する Gitに変更を登録すると、自動でビルド・デプロイされるようにする コードに加え、記事の内容もファイルとしてGitに保存し、そこからEmDashに投入する
向いている場合 コードを触らず、管理画面だけで運用する コードを改修する。1人で運用する 複数人で開発する。デプロイの手順を人に依存させたくない 記事の変更を差分で確認したい。記事を一括で生成・更新する
注意点 コードの元のファイルは手元にしか残らない。パソコンの故障で失う Gitの基本操作を覚える必要がある 自動デプロイの設定と、失敗したときの確認が必要 管理画面で直した内容とGitの内容がずれる。どちらを正本にするかのルールが必要
費用と手間 最小 小(GitHubの非公開リポジトリは無料)
根拠にした公式ページ コンテンツの作成と公開、バックアップと復旧、Cloudflare「Rollbacks」、Cloudflare「D1 Time Travel」 Aと同じ、GitHubの料金ページ Cloudflare「Workers Builds」、コアDBマイグレーション CLIリファレンス(emdash content)、運用中サイトのスキーマ変更(emdash export-seed

別の選択肢が合う条件

複数人で開発する場合や、デプロイを必ず同じ手順で行いたい場合はCが合います。記事をAIで一括生成し、変更点を差分で確認したい場合はDも選択肢になります。その場合は、管理画面での直接の編集を禁止するなど、正本を1つに決めるルールが必要です。

根拠にした公式ページ

  • バックアップと復旧(原文:https://docs.emdashcms.com/guides/backups/)
  • EmDashのアップデート(原文:https://docs.emdashcms.com/deployment/updating/)
  • コンテンツの作成と公開(原文:https://docs.emdashcms.com/guides/working-with-content/)
  • 運用中サイトのスキーマ変更(原文:https://docs.emdashcms.com/deployment/schema-evolution/)
  • CLIリファレンス(原文:https://docs.emdashcms.com/reference/cli/)
  • Cloudflare Workersのロールバック(https://developers.cloudflare.com/workers/configuration/versions-and-deployments/rollbacks/)
  • D1のTime Travel(https://developers.cloudflare.com/d1/reference/time-travel/)
  • Cloudflare Workers Builds(https://developers.cloudflare.com/workers/ci-cd/builds/)
  • GitHubの料金ページ(https://github.com/pricing)