ツールのバージョンやインストール方法はDocument as a CodeとしてCIやバージョンファイルに記述されているのでそれを見てほしい。
- Swift 5.2
- Xcode 12
- Vapor 4.5
# 開発環境向けシークレット環境変数の設定
# 中身の値はキー名とマスクしてる値からだいたいわかるはず。
$ cp .env.development{.sample,}
$ swift run
# or
$ swift package generate-xcodeproj
$ open rocket-api.xcodeproj # Xcodeで実行
# テスト環境向けのシークレットを設定
$ cp ./Tests/.env.testing{.sample,}
$ docker-compose up db
$ swift test
# or Xcodeでテスト実行
- Edit Schemes > Run > OptionsのUse custom working directoryにチェックし、rocket-apiのpathを記述
- Edit Schemes > Test > Infoの右下の方の「Options...」をクリックしExecute in Parallelにチェック
- Build Settingsの「Enable Testing Search Paths」をYesに
メインのアプリケーション以外にいくつかExecutableなターゲットがあり、それらをビルドするときに不必要な依存をビルド/チェックアウトせずに済むようにパッケージを細かく切っている。それぞれのパッケージのREADMEで詳細・サンプルを確認してください。
App | ルーター+コントローラー |
AppTests | Appのテスト |
DomainEntity | ドメインエンティティ |
Endpoint | エンドポイントのスキーマ定義 |
Core | ドメインロジック |
処理の順番はApp->Core(Domain)->Core(Persistence)になっていて、DomainEntityとEndpointはどこからでも参照可能になっています。