CI セットアップ
CIはローカルで再現できる品質ゲートをマージ前に強制する層である。scalafmt / scalafix / テストがPRで抜けると、ドメイン安全性のレビュー前提が崩れる。
正規コマンドは 品質ゲート。kamae-scala スキルリポジトリ自体の開発は スキルリポジトリの開発、アプリケーションの日常開発は 開発環境 を読む。
CIはレビュアが依存する安全シグナルを強制する。フォーマット、lint、テスト、Scaladoc、パッケージ固有検証がそれに当たる。デフォルトのパイプラインは単純で高速に保ち、リスク低減の効果が見込める場合にのみ、負荷の高いチェックを追加する。
既存コマンドを先に使う。CIがなければ、変更したScalaドメインコードをカバーする最小workflowから始める。
スキルリポジトリ workflow
Section titled “スキルリポジトリ workflow”kamae-scala リポジトリは .github/workflows/ci.yml で2ジョブを実行する:
| ジョブ | 目的 |
|---|---|
package | validate_package.py、review-probe スモークテスト、Python 構文チェック |
scala | scalafmtCheckAll、scalafixAll --check、compile、test、taxiRequest の Scaladoc |
Scalaジョブは package に依存し、マニフェスト / リンク失敗をJVMツールチェーン取得前に早期失敗させる。
ローカル再現:
./scripts/ci.shステップごと:
python3 scripts/validate_package.pypython3 skills/kamae-scala-review/scripts/review_probe.py skills/kamae-scala/examples/src/main/scala --jsonsbt scalafmtCheckAll "scalafixAll --check" "project taxiRequest" compile Test/compile test doc必須レビュアーチェック
Section titled “必須レビュアーチェック”KamaeスタイルのScalaアプリケーションプロジェクトのCIには、最低限次を含める:
sbt scalafmtCheckAll- scalafixルールが設定されているとき
sbt "scalafixAll --check" - 可能なら
-Xfatal-warnings付きのsbt compile Test/compile sbt test- ライブラリ公開または公開ドメインAPI文書化があるとき
sbt doc
スキル / プラグインリポジトリでは追加で:
python3 scripts/validate_package.pypython3 skills/kamae-scala-review/scripts/review_probe.py <domain-or-example-path> --json代表的なマトリクス
Section titled “代表的なマトリクス”使うスタックにCIを合わせる:
| スタック | 追加 |
|---|---|
| Circe / JSON API | 境界パーステスト |
| doobie / Slick | 統合テストまたは testcontainers ジョブ |
| http4s / Pekko | ルート / ハンドラ契約テスト |
| ZIO / Cats Effect | ランタイムレイヤーが異なるとき別テスト設定 |
workflow の衛生
Section titled “workflow の衛生”- JavaをLTS(17または21)にpinし、
actions/setup-javaでcache: sbtを有効にする。 sbt/setup-sbt@v1でproject/build.propertiesのsbtバージョンを使う。- PRに
concurrencyとcancel-in-progress: trueを追加する。 - ジョブがより多くを要さない限り
permissions: contents: readを保つ。
リスク連動の安全ジョブ
Section titled “リスク連動の安全ジョブ”次を使うコードベースでは専用ジョブを追加する:
- JNIまたはネイティブライブラリ
- 暗号 / トークン処理
- 本番形状データに触れるmigrationスクリプト
アプリケーションテンプレート
Section titled “アプリケーションテンプレート”アプリケーションリポジトリのブートストラップ用スターター workflowは skills/kamae-scala/assets/templates/github-ci.yml を参照する。
同梱スクリプトでコピー:
python3 path/to/kamae-scala/skills/kamae-scala/scripts/apply_templates.py --target . --ci backendpython3 path/to/kamae-scala/skills/kamae-scala/scripts/apply_templates.py --target . --ci skill-packageスクリプトはデフォルト非破壊。プレビューは --dry-run、意図的置換のみ --force。
Kamae review probeをCIまたはpre-pushに追加可能:
python3 path/to/kamae-scala/skills/kamae-scala-review/scripts/review_probe.py \ domain/src/main/scala application/src/main/scala --jsonprobeはデフォルトadvisory。ドメイン型の迂回、PII用語、境界漏れのreview leadとして使い、チームが方針化しない限り必須merge gateにしない。
ローカルとの差分
Section titled “ローカルとの差分”開発環境 と同様、READMEまたは CONTRIBUTING.md にローカルとCIの差分を文書化する。助言的probeジョブとマージブロッカーを区別する。