バージョン履歴の持ち方
このページで決めること:問題が起きたときに、サイトのどの部分を、どこまで戻せるようにしておくか
決める前に知っておくこと
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でコードを保管する場合も、これらはリポジトリに入りません。
別の選択肢が合う条件
複数人で開発する場合や、デプロイを必ず同じ手順で行いたい場合は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)