|
1 | | -## Siv3D テンプレート |
| 1 | +## Siv3D Base Image |
2 | 2 |
|
3 | | -このリポジトリは、再利用可能な base image を中心にした Linux 向け Siv3D テンプレートです。 |
| 3 | +このリポジトリは、Siv3D 用の base image をビルドして GHCR に公開するためのものです。 |
4 | 4 |
|
5 | | -### できること |
| 5 | +### 責務 |
6 | 6 |
|
7 | | -- ルート直下の CMake プロジェクトでゲームコードを置ける |
8 | | -- `ghcr.io/n4mlz/siv3d-docker-base` に公開される Siv3D base image を使える |
9 | | -- devcontainer で Siv3D の再ビルドなしにすぐ開発を始められる |
10 | | -- `docker compose` でホストの GUI に接続して Linux 上で実行できる |
11 | | -- `ccache` と build 用 volume で再ビルドを高速化できる |
12 | | -- GitHub Actions から base image を自動公開できる |
| 7 | +- Siv3D 本体のビルドとインストール |
| 8 | +- Linux 用の開発依存パッケージの管理 |
| 9 | +- `ccache` と BuildKit キャッシュを使った高速化 |
| 10 | +- GitHub Actions から `ghcr.io/n4mlz/siv3d-docker-base` への公開 |
13 | 11 |
|
14 | | -### 使い方 |
| 12 | +### できること |
15 | 13 |
|
16 | | -#### 1. devcontainer で開く |
| 14 | +- Siv3D を何度もローカルでビルドし直さずに済む |
| 15 | +- template 側の devcontainer / compose から共通 image を使える |
| 16 | +- マルチステージビルドで最終 image を小さく保てる |
| 17 | +- Linux GUI や開発依存を image 側に寄せられる |
17 | 18 |
|
18 | | -VS Code などで devcontainer を開くと、公開済みの base image をそのまま利用します。 |
| 19 | +### 使い方 |
19 | 20 |
|
20 | | -#### 2. compose で起動する |
| 21 | +#### ローカルで image をビルドする |
21 | 22 |
|
22 | 23 | ```bash |
23 | | -docker compose up -d |
24 | | -docker compose exec siv3d-app bash |
| 24 | +docker buildx build -f docker/base/Dockerfile --load . |
25 | 25 | ``` |
26 | 26 |
|
27 | | -#### 3. プロジェクトをビルドする |
28 | | - |
29 | | -コンテナ内またはローカルの Linux 環境で、リポジトリのルートからビルドします。 |
| 27 | +#### GHCR に公開する |
30 | 28 |
|
31 | | -```bash |
32 | | -cmake -S . -B build -GNinja -DCMAKE_BUILD_TYPE=Debug |
33 | | -cmake --build build |
34 | | -``` |
| 29 | +`.github/workflows/publish-base-image.yml` が `main` への push や tag push で自動公開します。 |
35 | 30 |
|
36 | | -#### 4. 実行する |
| 31 | +#### 利用側テンプレート |
37 | 32 |
|
38 | | -```bash |
39 | | -./build/Siv3DTemplate |
40 | | -``` |
| 33 | +この base image を利用するテンプレートは、別リポジトリの `/home/noname/me/workspace/personal/siv3d-template` に分離しています。 |
41 | 34 |
|
42 | 35 | ### 主な feature |
43 | 36 |
|
44 | | -- **Siv3D base image の分離**: 重い Siv3D ビルドを `docker/base/Dockerfile` に集約 |
45 | | -- **高速な再ビルド**: `ccache` と named volume でゲーム側の再ビルドを短縮 |
46 | | -- **Linux GUI 対応**: X11 をホストにバイパスして描画可能 |
47 | | -- **devcontainer 対応**: そのまま開いて開発を始められる |
48 | | -- **GitHub Actions 対応**: `main` への push などで GHCR に公開 |
49 | | -- **テンプレート向け構成**: `src/Main.cpp` だけを触ればゲームの起点になる |
50 | | - |
51 | | -### GitHub Actions |
52 | | - |
53 | | -`docker/base/Dockerfile` から base image をビルドし、`.github/workflows/publish-base-image.yml` から GHCR に公開します。 |
54 | | - |
55 | | -`latest` と commit/tag ベースのタグを付けるので、devcontainer と compose の両方で安定して利用できます。 |
| 37 | +- **Siv3D base image の集中管理**: heavy な build をこの repo に集約 |
| 38 | +- **キャッシュ対応**: BuildKit cache と `ccache` を活用 |
| 39 | +- **小さい最終 image**: multi-stage で build tree を持ち込まない |
| 40 | +- **GHCR 公開**: GitHub Actions で継続的に配布 |
56 | 41 |
|
57 | 42 | ### ファイル構成 |
58 | 43 |
|
59 | | -- `CMakeLists.txt`: ルートの CMake 定義 |
60 | | -- `src/Main.cpp`: グラフィカルな最小サンプル |
61 | | -- `docker/base/Dockerfile`: Siv3D base image のビルド定義 |
62 | | -- `.devcontainer/devcontainer.json`: devcontainer 設定 |
63 | | -- `compose.yml`: ローカル実行用の compose 定義 |
64 | | -- `.github/workflows/publish-base-image.yml`: GHCR への公開 workflow |
| 44 | +- `docker/base/Dockerfile`: Siv3D base image の定義 |
| 45 | +- `.github/workflows/publish-base-image.yml`: GHCR への publish workflow |
| 46 | +- `.dockerignore`: Docker build context の整理 |
0 commit comments