@acme/pricing にパッケージ化され、ハブからオンプレミスRegistryへミラーされる daily-price-watch flow(ブラウザーTool search-price@1.2.0 → 変換 → シークレットWebhookへの条件付き http.post)を実行例として使います。
手順に沿って複製する
モードを選ぶ
2つのRegistry間でバイトをどのように流すかを決めます。
ハブからオンプレミスRegistryにシードする場合は、
| モード | 方向 | 用途 |
|---|---|---|
pull | remote → local | 一致するPackをリモートからローカルRegistryへ取得します。 |
push | local → remote | ローカルPackをリモートへ公開します。 |
sync | 双方向 | newer-digest-winsで、競合を表面化します(後述)。 |
scheduled | 上記のいずれかをcronで実行 | ウォームミラーまたはDRレプリカ。 |
pull が自然な選択です。browserflow registry mirrorを実行する
--from をソースに、--to を宛先に向け、--packs でPackを選択し、--mode を設定します。--packs のglobは、どのPackをミラーするかを選択します。ここでは @acme スコープ配下のすべてのPackで、daily-price-watch と search-price@1.2.0 の置き場所である @acme/pricing が含まれます。Transportは差し替え可能です。--from と --to には、HTTPS Registry、OCI Registry、オブジェクトストレージ、またはエアギャップ向けのファイルバンドルを指定できます。以下で説明する検証は、バイトがどのように届いたかにかかわらず同じです。到着時検証を理解する
すべてのアーティファクトがdigestを持つため、複製では到着時に検証します。主張されたdigestと一致するハッシュにならないPackは、解決または実行される前に拒否されます。digest mismatchは警告ではなく、そのアーティファクトに対するハード失敗です。エンジンは、バイトが主張するdigestと一致しないPackを解決も実行もしません。これにより、ある環境で証明されたPackが別の環境で同一に再現されます。
競合に対処する
sync モードでは、ルールはnewer-digest-winsであり、競合は黙って解決されるのではなく表面化されます。自動解決されない唯一のケースは次のとおりです。これが発生した場合は、ソース側で解決します。既存バージョンの下で異なる本体を再ミラーしようとするのではなく、バージョンを上げます(変更後の本体を新しい @acme/pricing@2.3.1 として公開します)。宛先を検査して検証する
ミラー後、何が到着したかを確認し、完全性をローカルで再チェックします。registry ls は現在存在するPackとバージョンを表示します(@acme/pricing@2.3.0 が見えるはずです)。registry verify は、保存済みアーティファクトを主張されたdigestに対して再ハッシュします。これは到着時に実行されるのと同じチェックを、オンデマンドで使えるものです。
すべてのミラーは特権操作であり、アクター、タイムスタンプ、関係するdigestとともに監査ログへ記録され、content-addressedなコンプライアンス証跡を提供します。/service/access-control を参照してください。
関連
複製の詳細
概念モデル: モード、競合ルール、Transport、署名。
エアギャップ環境へのデプロイ
検証済みファイルバンドルとして、ネットワーク境界を越えてPackを運びます。
Pack
ミラーするPackを作成し、バージョン付けし、署名し、公開します。