次の方法で共有


アップストリーム ソースとは

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

Azure Artifacts アップストリーム ソースを使用すると、開発者は、フィードに発行されたパッケージや、NuGet.org や npmjs.com などのパブリック レジストリからインストールされたパッケージなど、さまざまな配信元のパッケージを 1 つのフィードに格納 できます。 アップストリーム ソースが有効になると、アップストリーム ソースからインストールされたすべてのパッケージがフィードに自動的に保存されます。

アップストリームからパッケージを保存するには、 Feed およびアップストリーム 閲覧者 (コラボレーター) ロール以上が必要です。 詳細については、 フィードのロールとアクセス許可 に関するページを参照してください。

アップストリーム ソースを使用する理由

アップストリーム ソースを有効にすると、1 つのフィード内で製品の依存関係を管理するためのいくつかの利点があります。

  • 簡略化: すべてのパッケージを 1 つのフィードに格納すると、 NuGet.confignpmrc、settings.xmlなどの構成ファイルが簡略化 されます 。 構成ファイル内のフィードが 1 つだけの場合、セットアップの複雑さを軽減し、エラーを最小限に抑えることができます。

  • 一貫性のあるビルド: フィードは定義された順序でパッケージ要求を解決し、環境全体で予測可能で信頼性の高いビルドを保証します。

  • パッケージの整合性: フィードにはアップストリーム ソースから保存されたパッケージに関するメタデータが保持されるため、その信頼性を確認し、コピーや悪意のある可能性のあるバージョンではなく、元のバージョンを使用していることを確認できます。

  • 信頼性: アップストリーム ソースからインストールされたパッケージは、フィードに自動的に保存されます。 これにより、メンテナンスやその他の問題によってアップストリーム ソースが一時的に使用できなくなった場合でも、継続的なアクセスが保証されるため、自信を持って開発と構築を続けることができます。

パッケージ コンシューマーのベスト プラクティス

パッケージ コンシューマーとしてのアップストリーム ソースの利点を最大限に活用するには、次のベスト プラクティスに従います。

構成ファイルで 1 つのフィードを使用する

フィードが 確定的な復元を提供するには、構成ファイル ( nuget.confignpmrc など) がアップストリーム ソースが有効になっている 1 つのフィードのみを 参照していることを確認します。

  • :

    registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
    always-auth=true
    
    <packageSources>
      <clear />
      <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
    </packageSources>
    

    NuGet は複数の 構成ファイルをコンパイル 適用するオプションの完全なセットを決定します。 <clear /> を使用すると、上位レベルの構成ファイルで指定されている他のすべてのパッケージ ソースが無視されます。

アップストリーム ソースを意図的に整理する

NuGet.orgnpmjs.com などのパブリック レジストリのみを使用している場合、アップストリーム ソースの順序は動作に影響しません。 フィードへの要求は、「検索順序」セクションで説明されている順序に従います。

ただし、フィードとパブリック レジストリの組み合わせなど、複数のソースを管理する場合、各アップストリーム ソースはフィードの構成設定で定義されている順序で検索されます。 このような場合は、アップストリーム ソースの一覧の最初にパブリック レジストリを配置することをお勧めします。

一部の固有のシナリオでは、セキュリティ上の問題に対処したり、機能を強化したり、パブリック リポジトリから直接取得するのではなく、パッケージを内部的に再構築する必要がある特定の内部要件を満たすために、オープンソース ソフトウェア (OSS) パッケージを変更する組織もあります。 組織がこの方法に従う場合は、これらのカスタマイズされた OSS パッケージを含むアップストリーム ソースを他のパブリック レジストリの前に配置します。 これにより、カスタマイズされたバージョンがパブリックバージョンではなく使用されるようになります。

フィード所有者とパッケージ発行元のベスト プラクティス

フィードをアップストリーム ソースとして簡単に構成できるようにするには、次のベスト プラクティスに従います。

既定のビューを使用する

新しく作成されたすべてのフィードでは、既定で @Local ビューが使用されます。 このビューには次のものが含まれます。

  • フィードに直接発行されたパッケージ。
  • アップストリーム ソースから保存されたパッケージ。

新しくリリースされたパッケージ バージョンのビューなどの他のビューを使用する場合は、パッケージを @Release ビューに昇格させ、そのビューをターゲット コンシューマーが使用できるようにします。 詳細については、「フィードビュー」を参照してください。

パッケージ グラフを構築する

パッケージ グラフを作成するには、フィードの既定のビューに接続し、共有するパッケージをインストールするだけです。 パッケージが既定のビューに保存されると、パッケージを使用するユーザーはパッケージ グラフを解決し、目的のバージョンをインストールできます。 アップストリーム ソースからのパッケージは、対応するアップストリーム ソースの構成済みビューに基づいて表示されます。 詳細については、「 アップストリームが使用可能なパッケージのセットを構築する方法 を参照してください。

検索の順番

NuGet や Maven など、複数のフィードをサポートするパブリック パッケージ マネージャーの場合、フィードのクエリ順序が不明確または非決定的な場合があります。 たとえば、NuGet は、構成ファイル内のすべてのフィードに並列クエリを送信し、先入れ先出し (FIFO) 方式で応答を処理するため、結果に不整合が生じる可能性があります。

Azure Artifacts アップストリーム ソースでは、フィードとそのアップストリーム ソースを次の順序で検索することで、構造化された検索順序を適用することで、この不確実性を排除します。

  1. フィードに直接公開されたパッケージ。

  2. アップストリーム ソースから保存されたパッケージ。

  3. アップストリーム ソースから利用できるパッケージ。 各アップストリーム ソースは、フィードの構成に記載されている順序で検索されます。

Azure Artifacts では、Visual Studio の NuGet パッケージ エクスプローラー を使用したアップストリーム ソースでのパッケージの検索はサポートされていません。

アップストリーム ソースからパッケージを保存

フィードでアップストリーム ソースが有効になっている場合、Azure Artifacts は、そのアップストリーム ソースからコラボレーター以上によってインストールされたパッケージのコピーを自動的に保存します。

たとえば、 npm install express などのコマンドを使用して、アップストリーム ソースから直接パッケージをインストールできます。 また、パッケージは依存関係の解決の一部としてインストールされる可能性があるため、 express をインストールすると、 受け入れなどの依存関係も保存されます。

アップストリーム ソースは、コンシューマーとインフラストラクチャに重要なセーフガードを提供します。 パブリック レジストリでダウンタイム、メンテナンスが発生した場合、または一時的に使用できなくなった場合でも、フィードから必要なパッケージを取得し、開発を続行できます。

カスタム アップストリーム ソースは、npm パッケージでのみサポートされます。

アップストリーム ソースからのパッケージをオーバーライドする

フィードでアップストリーム ソースが有効になっている場合、これらのアップストリーム ソースのいずれかに 既に存在するパッケージ バージョンを発行することはできません 。 たとえば、NuGet.org アップストリームが有効になっている場合、そのバージョンは既に NuGet.org で使用できるため、フィードに Newtonsoft.Json 10.0.3 を発行することはできません。

アップストリーム ソースからパッケージ バージョンをオーバーライドするには:

  1. 関連するアップストリーム ソースを無効にします。

  2. 目的のパッケージ バージョンをフィードに発行します。

  3. アップストリーム ソースを再度有効にします。

このワークフローにより、アップストリーム ソースの整合性を維持しながら、目的のバージョンを発行できます。

パッケージ バージョンは不変です。 アップストリーム ソースが無効または削除された場合でも、保存されたパッケージはフィードに残ります。

アップストリーム ソースの正常性状態

フィードに障害が発生したアップストリーム ソースがある場合、同じプロトコルを使用するパッケージのメタデータを更新できなくなります。 アップストリーム ソースの正常性状態を確認するには、次の手順に従います。

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. [ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。

  3. 歯車アイコンの 歯車アイコン を選択して フィード設定を開き、[ アップストリーム ソース] を選択します。

    アップストリーム ソースの最後の同期状態を示すスクリーンショット。

  4. エラーが発生した場合は、警告メッセージが表示されます。 失敗した状態を選択すると、エラーの原因や解決手順などの詳細情報が表示されます。

    同期の失敗の詳細を示すスクリーンショット。

NuGet.org などのパブリック レジストリの場合、通常、パッケージがパブリック レジストリにプッシュされてからダウンロードできるようになるまで、3 から 6 時間の遅延が発生します。 この遅延は、ジョブのタイミングとデータ伝達によって異なります。 ただし、アップストリーム ソースが Azure Artifacts フィードの場合、待機時間は通常数分以下です。