Akashic のサーバーサイドとなる、Akashic System のメインリポジトリです。Akashic System の詳細な利用方法については、公式サイトのドキュメント を参照してください。
packages/ ディレクトリには、 npm install して使われるライブラリが置かれています。
servers/ ディレクトリには、 npm start ができる private:true なものが置かれています。
インストールして一通り動かすのに必要なもの
- Node.js LTS
- Yarn Classic
- node-gyp setup
- Docker: for middlewares
CLI によるインストール
git clone git@github.com:akashic-games/akashic-system.git
cd akashic-system
yarn install --immutable --check-cache
yarn build
git config commit.template .gitcommit.txt
docker-compose up -d
yarn db:migrate
yarn db:seed127.0.0.1 database
127.0.0.1 redis
127.0.0.1 rabbitmq
127.0.0.1 mongodb
127.0.0.1 zookeeper
127.0.0.1 minio
すべて Conventional Commits にしてください。
$ git config commit.template .gitcommit.txt でコミットメッセージのテンプレートを設定すると良いでしょう。
開発手順は、 npm のライフサイクルに則っています。 https://docs.npmjs.com/misc/scripts
リポジトリのルートで実行するもの
| 実行の仕方 | 説明 |
|---|---|
npm run bootstrap |
このリポジトリの初期化をする。 |
npm start |
すべての Akashic サーバを起動する。Docker で各種ミドルウェアも起動しておくこと。 |
npm t |
すべてのテストを実行する。 |
npm run fmt |
コードの整形をする。 |
npm run lint |
(CI でしか使わない)すべての Lint を実行する。( npm run fmt で良い) |
npm run push |
更新のあるモジュールのバージョンを更新して npm publish |
各パッケージで実装されている必要のあるもの
npm run xxx の xxx |
説明 |
|---|---|
prepare |
https://docs.npmjs.com/misc/scripts |
lint |
なにか特別な Lint があれば。 |
format |
なにか特別な code formatter があれば。 |
- リポジトリルートで
npm run ci-test: Small と Medium - リポジトリルートで
npm t: 全部(Small と Medium と Large と Enormous) - 各パッケージで
npm t: そのパッケージの Small と Medium と Large
*.spec.ts は、 Small テストです。テスト対象のクラスが使う Dependencies はすべて Mock にしてください。
*.test.ts は、Medium テストです。同じ名前空間以下の Dependencies と外部モジュールは適宜 import し、生成して使えます。
__tests__/ ディレクトリにあるものは、 Large テストです。テストファイルからは ../index.ts と外部モジュールのみ import してよいです。
例えば Play/__tests__/basic.ts というファイルからは、「 Play/index.ts 」と、「必要な外部モジュール」のみが使えます。
例外として、 ./src/infrastructure/ は外部モジュール扱いして良いです。
リポジトリルートの tests/ ディレクトリには、 Enormous テストがあります。
これは、 servers を使う、いわゆる「シナリオテスト」「E2E テスト」を実装する場所です。
例えば MinIO や Grafanaなどを docker-compose.middleware.yml に含めておいて利用するなら、ミドルウェア扱いして良いです。
ただし、「 servers/ にあるものを docker run して http アクセスする」みたいなのは、「外部サービスの利用」に当たるものとし、 Enormous になります。
Pull Request の作成・更新を契機に CI が起動します。Approve を得る前に CI が通るかどうかを確認してください。 また、main ブランチへの push によっても CI は起動します。
CI では全てのテストと lint チェック、コーディング・フォーマットのチェックがおこなわれます。
CI のワークフローは次のファイルで管理しています: .github/workflows/ci.yml
他のプロジェクトから参照される以下の package が publish 対象です。main ブランチに push することで、ワークフローが自動で publish を開始します。
新しいバージョンのパッケージを公開する際は、あらかじめ各 package の package.json の version を書き換えておいてください。
packages/akashic-storage-corepackages/amflow-messagepackages/amtplibpackages/cast-utilpackages/content-storage-typespackages/master-agent-rpcpackages/playlog-clientpackages/server-engine-data-types
ワークフローは次のファイルで管理しています: .github/workflows/release-packages.yml
main ブランチに push することで、ワークフローが自動で Docker image の build と push をおこないます。
次の Docker image が作られます。
ghcr.io/akashic-games/akashic-system:latest-amd(amd64 版)ghcr.io/akashic-games/akashic-system:latest-arm(arm64 版)
また、上記 image を参照するマルチアーキテクチャの manifest も作られます。
ghcr.io/akashic-games/akashic-system:latest
利用可能なイメージはこちらで確認できます: https://github.com/orgs/akashic-games/packages/container/package/akashic-system
ワークフローは次のファイルで管理しています: .github/workflows/release-image.yml
本リポジトリは MIT License の元で公開されています。 詳しくは LICENSE をご覧ください。
ただし、画像ファイルは CC BY 2.1 JP の元で公開されています。
サードパーティ製のライセンスについては THIRD-PARTY-NOTICES をご覧ください。
