Riot サービス
サービスループ
- 最初に
riot-contributorを使用して、リポジトリのワークフロー、ダーティワークツリーの処理、および検証の期待事項を確認します。 - 特定のサイト/サービスディレクトリから作業します。各サービスは独自の
package.json、bun.lock、tsconfig.json、通常はwrangler.tomlを持ちます。 - スクリプトが存在する場合は、ツールを直接呼び出す代わりに
bun run <script>を使用します。 - サービスごとのロックファイルを保持します。明示的に要求されない限り、リポジトリルートにJSワークスペースを追加しないでください。
- デプロイ、リモートマイグレーション、ライブE2Eテスト、トークン変更、DNS変更、および本番データ変更は、明示的なユーザー承認操作として扱います。
- まずローカルチェックとフェイクを優先します。ライブテストは、サービス固有の環境変数を介したオプトインです。
サービス一覧
sites/api.pkgs.ml:パッケージレジストリのコントロールプレーンWorker。公開/認証/検索/ビュー/イベント、D1マイグレーション、Drizzleスキーマ、R2ストレージキー、キュー、Durable Objectによる公開調整、およびD1バックアップワークフローを担当します。sites/cdn.pkgs.ml:パッケージアーティファクト、スパースインデックスドキュメント、Riot/OCamlバイナリメタデータ、およびアクセス分析を提供するCDN Worker。../api.pkgs.ml/srcからレジストリの型/ストレージヘルパーを再利用します。sites/docs.pkgs.ml:生成されたパッケージドキュメントサービス。R2からドキュメントを提供し、パッケージ公開/処理キューを消費し、パイプライン実行/イベントをレジストリD1に記録し、Cloudflare Sandboxコンテナを使用してドキュメント/ビルドの検証を行います。sites/pkgs.ml:公開パッケージレジストリWebアプリ。Astro + Cloudflareアダプター + Reactアイランド。レジストリのビューAPIとスパースインデックスドキュメントを読み取ります。sites/riot.ml:メインの静的Riotウェブサイト。Astro + Tailwind、Pagesスタイルのデプロイ。sites/get.riot.ml:インストールスクリプトのリダイレクト/プロキシWorker。
Cloudflare ツール
- Worker/Astroサービスのライフサイクルには Wrangler を使用します:
wrangler dev、wrangler deploy、wrangler d1 migrations apply、wrangler pages deploy、wrangler types、および設定駆動のローカル開発。 - グローバルインストールに依存するのではなく、サービスローカルの
wrangler依存関係を最新に保ち、ロックファイルで固定します。 - 統合
cfCLIは、API/リソースの検査、または現在公開されている操作(特にアカウント、ゾーン、DNS、D1 API、R2 API、キューAPI、workers APIメタデータ、スキーマ探索)にのみ使用します。 - 実際のCloudflare変更に
cfを使用する前に、npx cf auth whoamiを実行し、npx cf agent-context <product>またはnpx cf schema <command...>でコマンドの形状を検査してください。 - サービス固有のコマンドがローカルで検証され、同じ設定駆動の動作をサポートしていることが確認されない限り、Wranglerのデプロイ/開発/マイグレーションスクリプトを
cfに置き換えないでください。
設定とバインディング
wrangler.toml、エクスポートされたEnvTypeScriptインターフェース、テスト用フェイク環境を同期させたままにします。- Workerのエントリポイントと共有モジュールでは、明示的な
Envインターフェースを優先します。 - 非シークレットのデフォルトは
[vars]に配置し、シークレットは.env、Wranglerシークレット、またはCloudflare管理シークレットに保持します。 api.pkgs.mlのD1スキーマ変更については、sites/api.pkgs.ml/migrations/にSQLマイグレーションを追加し、src/schema.ts/DBヘルパーを一緒に更新します。- ランタイムのD1アクセスは、
api.pkgs.ml/src/db.ts、metadata-db.ts、pipeline-db.ts、access-db.ts、または狭い名前の兄弟ファイルにあるDrizzleヘルパーを介して行います。 - R2オブジェクトキーの契約は
api.pkgs.ml/src/storage.tsにあります。キーを変更する場合は、CDN/API/Webコンシューマーとテストを一緒に更新します。 - レジストリイベントペイロードの形状は、ユーザー向けのサービス履歴です。新しいイベントタイプを
api.pkgs.ml/src/types.ts、DBシリアライゼーション、ビュー、およびテストに追加します。
テスト
- 変更を完了する前に、変更したサービスの
bun run checkを実行します。 - サービスがローカルテストを定義している場合は、
bun run testを実行します。 - 明示的に要求されない限り、
bun run deploy、bun run migrate:remote、またはライブtest:e2eを実行しないでください。 api.pkgs.mlの場合、ローカルテストはtests/helpers.tsのFakeR2Bucket、FakeD1Database、FakeQueue、およびFakeExecutionContextを使用します。cdn.pkgs.mlの場合、Cloudflare SDKモックを発明する代わりに、レジストリのテストフェイクを再利用します。docs.pkgs.mlの場合、フェイクパイプライン実行エンジンとキュー排出ヘルパーを優先します。イベントストリームをテストする際は、データベースシーケンスによる耐久性のある順序付けをアサートします。- Astroサービスの場合、
bun run checkを実行します。チェックの一環として、Astroが.astro型ファイルを再生成することを期待します。
Web 開発
- 各サービスの既存のUIスタックに合わせます。
pkgs.mlはAstroサーバー出力、Reactアイランド、Tailwind、Cloudflareアダプターを使用します。docs*.mlは該当する場合にStarlightを使用します。riot.mlは静的Astroサイトです。 - 最初の画面は、マーケティングのプレースホルダーではなく、実際の製品/サービスの表面にします。
- 抽象化を追加する前に、既存のコンポーネント、レイアウト、CSSトークン、フォント、およびルート規約を使用します。
- レジストリWebの変更には、
sites/pkgs.ml/src/lib/web-views.tsのレジストリビューAPIと、package-index.tsのスパースインデックスヘルパーを優先します。
運用安全性
- 本番エンドポイントを実際のものとして扱います:
api.pkgs.ml、registry.pkgs.ml、cdn.pkgs.ml、pkgs.ml、docs.pkgs.ml、docs.riot.ml、play.riot.ml、riot.ml、およびget.riot.ml。 - 明示的なユーザーの指示なしに、リモートD1の復元/エクスポート/インポート、DNS書き込み、ルート/ドメイン書き込み、デプロイ、またはトークン操作を決して実行しないでください。
- ライブスモークテストが要求された場合は、まずそのサービスのREADME/envゲートを読み、どの環境変数がテストを破壊的または認証済みにするかを明記してください。