Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Azure Artifacts アップストリーム ソースを使用すると、開発者は 1 つのフィードを使用してパッケージ管理を一元化し、発行されたパッケージと、NuGet.org などのパブリック レジストリから使用されるパッケージの両方を格納できます。
アップストリーム ソースには、シンプルさ、信頼性、パッケージの整合性など、依存関係を管理するためのいくつかの利点があります。 アップストリーム ソース を参照してください。詳細については、 を参照してください。
外部ソース バージョンを許可する
この機能を使用すると、開発者は、NuGet.org や npmjs.com などのパブリック レジストリのパッケージ バージョンを使用するかどうかを制御できます。
特定のパッケージに対して [ 外部バージョンの許可 ] トグルが有効になると、パブリック レジストリのバージョンをフィードに保存できるようになります。 既定では、このオプションは無効になっており、パブリック レジストリから悪意のある可能性のあるパッケージへの露出を減らすことで、セキュリティのレイヤーを追加します。 この設定を変更しても、フィードに既に保存されているパッケージのバージョンには影響しません。 これらのバージョンは、この設定に関係なく引き続きアクセスできます。 外部から提供されるバージョン 機能を許可する を有効にするには、フィード所有者 である必要があります。
パッケージの外部バージョンを許可する
特定のパッケージの外部バージョンの使用を有効にするには、次の手順に従います。
注
外部ソース バージョンを許可するには、 Feed 所有者 である必要があります。
Azure DevOps にサインインし、プロジェクトに移動します。
[ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。
パッケージを選択し、その他のオプションの省略記号ボタンを選択し、[ 外部ソースバージョンを許可する] を選択します。
[ 外部バージョンを許可 する] を切り替えて機能を有効にし、完了したら [閉じる ] を選択します。
REST API を使用して外部バージョンを許可する
REST API を使用して特定のパッケージの外部バージョンを有効にするには、次のエンドポイントを使用します。
| パッケージの種類 | API エンドポイント |
|---|---|
| NuGet |
-
アップストリーム動作を設定する - アップストリームの挙動を取得する |
| npm |
-
アップストリーム動作を設定する - スコープ付きアップストリーム動作を設定する - パッケージのアップストリーム動作を取得する - スコープ付きパッケージのアップストリーム動作を取得する |
| ニシキヘビ |
-
アップストリームの挙動を取得する - アップストリーム動作を設定する |
| Maven |
-
アップストリームの挙動を取得する - アップストリーム動作を設定する |
| 貨物 |
-
アップストリームの挙動を取得する - アップストリーム動作を設定する |
PowerShell を使用して外部バージョンを許可する
PowerShell を使用して特定のパッケージの外部バージョンを有効にするには、次の手順に従います。
個人用アクセス トークンを作成し、Packaging>の読み取り、書き込み、管理の権限を付与します。
個人用アクセス トークンの環境変数を作成します。
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"個人用アクセス トークンを Base64 でエンコードされた文字列に変換し、HTTP 要求ヘッダーを作成します。
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }フィードの種類に基づいてエンドポイント URL を構築します。
プロジェクト スコープのフィード:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=7.2-preview.1"組織スコープのフィード:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=7.2-preview.1"
シナリオに基づいて、テーブルからコマンドを実行します。
アクション Description Command アップストリーム動作を取得する パッケージのアップストリーム動作状態を取得します。 前の手順の $urlと$headersを使用します。Invoke-RestMethod -Uri $url -Headers $headersアップストリーム動作の設定 versionsFromExternalUpstreamsをAllowExternalVersionsに設定して、パッケージの外部ソース バージョンを許可します。$body = '{"versionsFromExternalUpstreams": "AllowExternalVersions"}'
Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Patch -ContentType "application/json"アップストリーム処理のクリア versionsFromExternalUpstreamsをAutoに設定してアップストリームの動作をリセットします。$body = '{"versionsFromExternalUpstreams": "Auto"}'
Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Patch -ContentType "application/json"
注
アップストリームの動作に対する変更は、サービス全体に反映されるまでに時間がかかる場合があります。 設定を更新した後にパッケージを使用できない場合は、変更が有効になるまで最大 3 時間かかります。
適用可能なシナリオ
このセクションでは、外部バージョン (パブリック レジストリのパッケージ) が ブロック されるか、フィードへの保存が 許可 される一般的なシナリオについて説明します。 この記事の残りの部分では、パブリック レジストリのパッケージを パブリック パッケージ と呼び、Azure Artifacts フィードに格納されているパッケージを プライベート パッケージとして参照します。
シナリオ 1: パブリック バージョンがブロックされる
次の 2 つのケースで [外部バージョンの許可 ] 機能が有効になっている場合、パブリック バージョンはフィードに保存されません。
プライベート パッケージのバージョンが公開されている
プライベート パッケージが後でパブリックになった場合、フィードは、パブリック ソースから同じパッケージ名を持つすべての新しいバージョンをブロックします。
プライベート パッケージとパブリック パッケージの両方を持つ
チームがプライベート パッケージとパブリック パッケージの両方を使用する場合、外部バージョンの許可が有効になっていると、フィードによってパブリック レジストリから新しいパッケージ バージョンがブロックされます。
シナリオ 2: パブリック バージョンが許可されている
次の 3 つのケースで [ 外部バージョンの許可 ] 機能が有効になっている場合、パブリック バージョンはフィードに保存できます。
すべてのパッケージがプライベートである
すべてのパッケージがプライベートであり、チームがパブリック パッケージを使用する予定がない場合、この設定を有効にしてもチームのワークフローには影響しません。
すべてのパッケージがパブリックである
チームがレジストリまたはオープンソース リポジトリのパブリック パッケージのみを使用する場合、設定を有効にしてもワークフローには影響しません。
プライベートにされたパブリック パッケージ
パブリック パッケージが後でプライベートに変換された場合、外部バージョンの許可設定を有効にしても、チームのワークフローには影響しません。