← ソースコード説明書

設定ファイル・CI/CD

概要

モノレポのルート設定ファイル、Git hooks、GitHub Actions ワークフロー、Docker 構成、環境変数の一覧と説明。

ルート設定ファイル

package.json

  • ワークスペース: packages/*, apps/*
  • 主要スクリプト:
スクリプトコマンド
build全パッケージ + アプリをビルド
typecheckpackages/core, packages/web, apps/editor, apps/ksc-editor, apps/next, apps/hono
lintapps/next
test全パッケージのユニットテスト
test:e2ePlaywright E2E テスト
test:azureAzure E2E テスト

Playwright 設定 (6 ファイル)

ファイルtestDirbaseURL用途
playwright.config.ts./e2elocalhost:5175KSC デモテスト
playwright.local.config.ts./testslocalhost:3000ローカル E2E
playwright.azure.config.ts./testsAzure Next.jsAzure E2E
playwright.azure-auth.config.ts./testsAzure Next.jsAzure 認証テスト
playwright.demo.config.tsデモモード
playwright.check.config.tsUI 検証

Git Hooks (.husky/)

pre-push (23 行)

git push 時に自動実行。失敗すると push がブロックされる。

  1. typecheck: packages/core, packages/web, apps/editor, apps/ksc-editor, apps/next, apps/hono
  2. lint: apps/next のみ(Editor lint は既存エラーあり)

pre-commit (26 行)

git commit 時に自動実行。

  1. ハードコード URL チェック: apps/editor/src/ 内の localhost:8080 を検出(api.ts は除外)
  2. E2E セレクタ同期チェック: check-e2e-sync.sh を実行

GitHub Actions ワークフロー (.github/workflows/)

deploy.yml (217 行) — Container Apps デプロイ

項目内容
トリガーpush to main (全コミット) + workflow_dispatch
ジョブbuild-and-push (並列 matrix: api, nextjs) → deploy → post-deploy-checks
ビルドDocker build → ACR レジストリ push
デプロイaz containerapp update で新イメージ適用
後処理ヘルスチェック (4サービス)、アセット URL、CORS、SPA fallback
環境変数VITE_API_URL, VITE_NEXT_APP_URL, VITE_PREVIEW_URL, API_URL, NEXT_PUBLIC_*

deploy-swa.yml (137 行) — Static Web Apps デプロイ

項目内容
トリガーpush to main + workflow_dispatch
ジョブEditor SWA, Preview SWA (並列)
依存ビルドCore, Compiler, KSC-Compiler, Battle, Web
デプロイAzure/static-web-apps-deploy@v1
後処理ヘルスチェック (Editor 200, Preview 200)

ci.yml (103 行) — CI パイプライン

項目内容
トリガーpush/PR to main
ジョブ (並列)typecheck, lint, unit-tests, unit-tests-apps, unit-tests-hono
typecheckpackages/core, packages/web, apps/editor, apps/ksc-editor, apps/next, apps/hono
lintapps/next のみ
ユニットテストcore, compiler, interpreter (packages); editor, next (apps)
Hono テストPostgreSQL サービスコンテナ付き
DB チェックPrisma マイグレーション未適用を検出、失敗なら CI 失敗

check-hardcoded-urls.yml (94 行)

項目内容
トリガーpush/PR to apps/editor/**
チェックlocalhost:8080 のハードコード検出、dist/ 内のURL確認
検証環境変数設定確認、ビルド成功確認

Azure SWA レガシー (3 ファイル, 各 46 行)

  • azure-static-web-apps-*.yml — Editor / Preview SWA(各1ファイル)
  • 現在は deploy-swa.yml に統合

Docker 構成

apps/hono/Dockerfile (マルチステージ)

# Stage 1: deps — 依存インストール
FROM node:20-slim AS deps
# root + workspace packages の package.json をコピー
# npm ci --workspace で依存インストール

# Stage 2: builder — ビルド
FROM deps AS builder
# ai-gateway ビルド
# Prisma クライアント生成
# Hono ビルド (tsc)

# Stage 3: runner — 実行
FROM node:20-slim AS runner
# OpenSSL インストール (Prisma 用)
# 非 root ユーザー (hono:nodejs)
# dist/, package.json, prisma/, node_modules コピー
EXPOSE 8080
CMD ["node", "dist/index.js"]

apps/next/Dockerfile (マルチステージ)

# Stage 1: deps
# Stage 2: builder — next build
# Stage 3: runner — next start
EXPOSE 3000

環境変数

apps/hono/.env

変数説明
DATABASE_URLPostgreSQL 接続文字列
JWT_SECRETJWT 署名キー
ALLOWED_ORIGINSCORS 許可オリジン (カンマ区切り)
AZURE_STORAGE_CONNECTION_STRINGBlob Storage 接続
AZURE_COMMUNICATION_CONNECTION_STRINGEmail 接続
API_RATE_LIMITAPI レートリミット
LOGIN_RATE_LIMITログインレートリミット
REGISTER_RATE_LIMIT登録レートリミット
PORTサーバーポート (デフォルト 8080)

apps/next/.env.local

変数説明
NEXT_PUBLIC_API_URLAPI サーバー URL
NEXT_PUBLIC_EDITOR_URLEditor SPA URL
NEXT_PUBLIC_PREVIEW_URLPreview エンジン URL

apps/editor/.env.development / .env.production

変数説明
VITE_API_URLAPI サーバー URL
VITE_NEXT_APP_URLNext.js アプリ URL
VITE_PREVIEW_URLPreview エンジン URL

Azure リソース構成

リソースサービス
APIAzure Container Apps
Next.jsAzure Container Apps
EditorAzure Static Web Apps
PreviewAzure Static Web Apps
DBAzure Database for PostgreSQL Flexible Server
AssetsBlob Storage
ACRContainer Registry

デプロイフロー

開発者
  ↓ git push main
GitHub Actions
  ├── ci.yml: typecheck + lint + unit test
  ├── deploy.yml: Docker build → ACR → Container Apps (API + Next.js)
  └── deploy-swa.yml: npm build → SWA deploy (Editor + Preview)
  ↓
Azure
  ├── Container Apps: API (:8080), Next.js (:3000)
  ├── Static Web Apps: Editor, Preview
  ├── PostgreSQL: DB
  └── Blob Storage: Assets
Ad: stickyBottom (728x90)
kaedevn - ノベルゲームを作れるプラットフォーム