Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure Artifacts アップストリーム ソースを使用すると、開発者は統合フィードを使用して、成果物フィードと、NuGet.org や npmjs.com などの一般的なパブリック レジストリからパッケージを発行および使用する利便性を得ることができます。
外部ソース バージョンを許可する
この機能を使用すると、開発者は、NuGet.org や npmjs.com などのパブリック レジストリのパッケージ バージョンを使用するかどうかを制御できます。
外部バージョンの許可 切り替えが特定のパッケージに対して有効になると、パブリック レジストリのバージョンをダウンロードできるようになります。 既定では、このオプションは無効になっており、パブリック レジストリから悪意のある可能性のあるパッケージへの露出を防ぐことにより、セキュリティレイヤーが追加されます。 外部から提供されるバージョン 機能を許可する を有効にするには、フィード所有者 である必要があります。
注
この設定を変更しても、フィードに既に保存されているパッケージのバージョンには影響しません。 これらのバージョンは、この設定に関係なく引き続きアクセスできます。
適用可能なシナリオ
次のセクションでは、外部バージョン (パブリック レジストリのパッケージ) がブロックされるか、フィードへの保存が許可される一般的なシナリオについて説明します。 この記事の残りの部分では、パブリック レジストリからのパッケージをパブリック パッケージとして、Azure Artifacts フィードのパッケージをプライベート パッケージと呼びます。
シナリオ 1: パブリック バージョンがブロックされる
プライベート パッケージのバージョンが公開されている
このシナリオでは、チームにはパブリックにされたプライベート パッケージがあります。 この場合、外部バージョンの設定により、フィードはパブリック ソースからのそのパッケージ名を持つ新しいバージョンの使用をブロックします。
プライベート パッケージとパブリック パッケージの両方を持つ
このシナリオでは、チームがプライベート パッケージとパブリック パッケージの組み合わせを使用する場合、外部から提供されるパッケージを禁止すると、パブリック レジストリから新しいパッケージ バージョンがブロックされます。
シナリオ 2: パブリック バージョンがブロックされない
すべてのパッケージはプライベートです*
既存のすべてのパッケージがプライベートであり、チームがパブリック パッケージを使用する予定がない場合、外部バージョンの設定は、このシナリオでのチームのワークフローには影響しません。
すべてのパッケージがパブリックである
このシナリオでは、パブリック レジストリやその他のオープンソース リポジトリから、チームがパブリック パッケージのみを使用する場合、設定はワークフローに影響しません。
プライベートにされたパブリック パッケージ
この状況では、パブリック パッケージがプライベート パッケージに変換されるとき、外部バージョンの設定はチームのワークフローに何も影響しません。
外部バージョンを許可する
注
外部ソース バージョンを許可するには、 Feed 所有者 である必要があります。 詳細については、「 Feed アクセス許可」を参照してください。
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
[ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。
パッケージを選択し、省略記号ボタンを選択して他のオプションを表示します。 外部ソースバージョンを許可を選択します。
トグル ボタンを選択して、外部バージョンを許可します。 完了したら Close を選択します。
REST API を使用して外部バージョンを許可する
PowerShell を使用して外部バージョンを許可する
個人用アクセス トークンを作成し、Packaging>の読み取り、書き込み、管理の権限を付与します。
個人用アクセス トークンの環境変数を作成します。
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
個人用アクセス トークンを baser64 でエンコードされた文字列に変換し、HTTP 要求ヘッダーを作成します。
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
エンドポイント URL を構築します。 例: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
プロジェクト スコープのフィード:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
組織スコープのフィード:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
次のコマンドを実行して、パッケージのアップストリーム動作状態を取得します。
$url
と $headers
は、前のセクションで使用したのと同じ変数です。
Invoke-RestMethod -Uri $url -Headers $headers