このREADMEは、現在のリポジトリ実装を元にした「サイト全体の管理手順」です。
- コンテンツ編集は
Sveltia CMS(/admin)で実施 - 編集内容は GitHub リポジトリ(
main)へコミット mainへの push をトリガーに GitHub Actions がビルド- ビルド成果物
dist/を FTP で本番サーバーへデプロイ developへの push をトリガーに STG 環境へ自動デプロイ(本番反映前の確認用)
src/content/notes: Notes記事src/content/live: ライブ情報src/content/member: メンバー情報src/content/tracks: 楽曲情報src/content/works: 作品情報public/admin: CMS設定(config.ymlを含む).github/workflows: デプロイ/同期の自動化scripts: 同期・生成スクリプトsrc/data/musicList.generated.ts: 自動生成ファイル(手編集しない)
- 管理画面:
/admin(public/admin/index.html/src/pages/admin.astro) - 設定ファイル:
public/admin/config.yml - backend: GitHub (
repo: t332b/website,branch: main) - メディア: Cloudinary(リポジトリアップロードは使わない設定)
push-deploy.ymlmainへの push(対象パス)または手動実行で起動- 再利用ワークフロー
deploy.ymlを呼び出し
deploy.yml- Node 20 / 依存インストール /
npm run build dist/存在確認後、SamKirkland/FTP-Deploy-Action@v4.3.6でFTPデプロイ
- Node 20 / 依存インストール /
push-deploy-stg.ymldevelopへの push(対象パス)または手動実行で起動- 再利用ワークフロー
deploy.ymlをref: developで呼び出し - ビルド時の
base_pathを/stg/に設定(CSS/JS を/stg/assets/...参照にする) - 本番と同じ FTP Secrets を使い、
FTP_REMOTE_DIR + stg/に配置
sync-content.yml(手動実行)npm run sync:contentで Sheets からworksとtracksを同期- 差分があればコミットして push
- その後
deploy.ymlを呼び出してデプロイ
-
FTP_HOST -
FTP_USERNAME -
FTP_PASSWORD -
FTP_REMOTE_DIR -
developの STG 反映は同じ Secrets を利用し、配置先のみ.../stg/に切り替え
GOOGLE_SERVICE_ACCOUNT(サービスアカウントJSON)GOOGLE_SHEETS_ID(シートID)
npm install
npm run devnpm run dev: 開発サーバー起動npm run build: 本番ビルドnpm run preview: ビルド確認npm run sync:content: Sheetsからworks/tracksを同期npm run test:sheets: Sheets接続確認
npm run dev/npm run buildの前にpredev/prebuildでscripts/generate-music-list.mjsが実行されます- 生成先は
src/data/musicList.generated.tsのため、基本は手動編集しないでください
export GOOGLE_SERVICE_ACCOUNT='{"type":"service_account", ... }'
export GOOGLE_SHEETS_ID='your-sheet-id'
npm run sync:content仕様(scripts/sync-content-from-sheets.mjs):
- 対象シート:
Works,Tracks - 必須カラム:
- Works:
id,title(slugは任意) - Tracks:
id,title,works_id(または後方互換でrelease_id)
- Works:
- 既存ファイルがあり、シート側
bodyが空の場合は既存本文を保持
astro: command not found- 依存未インストールの可能性が高いです
npm install後にnpm run devを実行してください