diff options
| author | Sho Sakuma <me@m1sk9.dev> | 2026-07-19 22:06:37 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-19 22:06:37 +0900 |
| commit | bee1a61b7e38b160d967a91dd06bc5f44e14d057 (patch) | |
| tree | a8a0d281f1ddb4f314eb70ec3d01f4e4f7134cc8 /website/src/ja/docs/developers/resource.md | |
| parent | 31e024179517b261dedd45ff10dc80bb928af5df (diff) | |
| download | LunaticChat-bee1a61b7e38b160d967a91dd06bc5f44e14d057.tar.gz LunaticChat-bee1a61b7e38b160d967a91dd06bc5f44e14d057.tar.bz2 LunaticChat-bee1a61b7e38b160d967a91dd06bc5f44e14d057.zip | |
docs: add developer design/architecture guide (EN/JA) (#251)
* docs: add developer design/architecture guide (EN/JA)
The docs site covered features and reference but had no entry point for
the codebase's design. Add a Developer Guide section describing the
module structure (engine shared kernel, platform-paper, platform-velocity),
the protocol-version compatibility model, and the Service Container /
Feature Gating pattern, so contributors can understand the architecture
without reading the source first.
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: mirror cross-server DM docs into English (#231)
PR #231 added the cross-server direct messaging feature but updated only
the Japanese docs. Port the same additions to the English pages
(configuration, direct-message, velocity, commands) so both locales stay
in sync.
Co-Authored-By: Claude <noreply@anthropic.com>
* style: apply biome formatting to ja.ts sidebar config
The developer-guide sidebar entries were not biome-formatted, failing the
build_docs CI check (format:check). Apply the formatter.
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Diffstat (limited to 'website/src/ja/docs/developers/resource.md')
| -rw-r--r-- | website/src/ja/docs/developers/resource.md | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/website/src/ja/docs/developers/resource.md b/website/src/ja/docs/developers/resource.md new file mode 100644 index 0000000..2e241b7 --- /dev/null +++ b/website/src/ja/docs/developers/resource.md @@ -0,0 +1,60 @@ +--- +layout: doc +--- + +# ビルド・リリース・バージョニング + +Gradle マルチモジュール構成で,engine を共有しつつ Paper / Velocity を独立した成果物としてビルド・リリースします. + +## ビルド構成 + +- ルート `build.gradle.kts` — Kotlin 2.4.0 + serialization / Shadow / ktlint / dokka を管理.JVM ターゲットは **JVM_25**.テストは JUnit Platform + jacoco で,共通テスト依存を全モジュールへ注入 +- `engine` — コアライブラリ (serialization / coroutines / ktor) を `api()` で公開しプラットフォームへ伝播.Adventure は `compileOnly`.Shadow を持たない純ライブラリ +- `platform-paper` — `version = paperVersion`.`api(project(":engine"))`.paper-api を `compileOnly`,KAML + kotlin-reflect を `implementation`.成果物は **`LunaticChat-<ver>.jar`** (classifier なし,`jar` は無効化) +- `platform-velocity` — `version = velocityVersion`.`api(project(":engine"))`.velocity-api を `compileOnly` + `annotationProcessor` (`@Plugin` 処理用).成果物は **`LunaticChat-<ver>-velocity.jar`** (classifier で区別) +- `dokka` — engine/paper/velocity を集約し HTML に README を include + +両プラットフォームの `processResources` は git short hash と `isNightly` から `version` / `gitCommitHash` / `channel` を算出し,`paper-plugin.yml` / `velocity-plugin.json` と `build-info.properties` にトークン展開します. + +## 独立バージョニング + +```properties +# gradle.properties +paperVersion=1.2.2 +velocityVersion=1.1.0 +``` + +Paper と Velocity は別々のバージョン番号を持ち,独立にリリースできます.**互換性を数値バージョンではなく engine 共有の [`ProtocolVersion`](/ja/docs/developers/engine#バージョニング戦略-protocolversion) で保証している**ため,更新頻度の異なる 2 プラットフォームをそれぞれのペースでバンプ・公開できるからです.ワイヤ形式は JSON + `ignoreUnknownKeys` で前方互換,プロトコルの MAJOR 一致 + MINOR 範囲チェックで後方互換をコントロールします. + +## リリースワークフロー + +タグのパターンでリリース対象が切り替わります. + +| ワークフロー | トリガタグ | ビルド対象 | バージョン検証 | +|-------------|-----------|-----------|---------------| +| `release.yaml` | `v*` | Paper + Velocity 両方 | gradle.properties から両バージョン抽出 | +| `release-paper.yaml` | `paper/v*` | Paper のみ | タグと `paperVersion` の一致を必須検証 | +| `release-velocity.yaml` | `velocity/v*` | Velocity のみ | タグと `velocityVersion` の一致を必須検証 | + +- 共通フロー: `validate` (既存リリースの重複チェック) → `build` (mise + Gradle setup, `shadowJar`) → `release` (`gh release create --draft` + Modrinth 公開) +- 個別ワークフロー (paper / velocity) はタグと `gradle.properties` の厳密一致を要求する点が `release.yaml` と異なる +- Modrinth の game-versions は Paper=`26.1.x` (loader: paper, folia),Velocity=`1.21.x` + `26.1.x` (loader: velocity) + +## CI + +`ci.yaml` は main への push / PR / 手動実行で動きます. + +- `build_plugin` — ktlintCheck → test + jacocoTestReport → Codecov アップロード → nightly shadowJar (`-PisNightly=true`) → artifact 保持 +- `build_dokka` / `deploy_dokka` — Dokka 生成 → GitHub Pages デプロイ (main push のみ) +- `build_docs` — `website/` を bun で format/lint/build → Cloudflare Workers (wrangler) へデプロイ (main push のみ) + +## 開発環境 + +- `mise.toml` — bun / java zulu-25 (`JVM_25` と整合) +- `x` — bash 製のデバッグサーバースクリプト.`./x <action> <platform> [--stable]` で start/stop/log/clean/rcon/help.`--stable` 省略時は nightly ビルド.`velocity` 指定時は **1 Velocity + 2 Paper** を立ち上げ,サーバー間チャット中継を実地検証できる +- `docker/` — paper / velocity / folia の 3 環境に `compose.yaml` (`itzg/minecraft-server:java25` 等).velocity.toml は `bungee-plugin-message-channel=true` でプラグインメッセージを有効化 + +## 関連 + +- [設計概要](/ja/docs/developers/architecture) +- [はじめに](/ja/docs/developers/introduction) |
