Share via


設定上游行為

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

有了 Azure Artifacts 上游來源,開發人員就能夠利用統一摘要,從成品摘要發佈和取用套件,以及 NuGet.org 或 npmjs.com 等熱門公用登錄。 先前,成品摘要會結合摘要本身和所有已設定上游來源的可用套件版本清單。

顯示摘要內容的圖例。

上游行為是一項功能,可讓開發人員選擇是否想要取用外部來源套件版本。 它會控管可從特定套件的公用登錄存取哪些套件。

一旦啟用上游行為,當套件發佈至您的 Azure Artifacts 摘要時,會封鎖來自公用登錄的任何版本,且無法下載。

此方法會藉由防止可能滲透至公用登錄的惡意套件,來增加額外的安全性層。

不過,如果使用者偏好這麼做,仍然可以停用上游行為設定,讓他們從公用登錄取用套件。

注意

新的行為不會影響目前正在使用的任何套件版本,因為它們會保留在摘要的 @local 檢視中。

適用的案例

下一節說明觸發上游行為以封鎖外部來源套件版本的各種常見案例,以及不需要封鎖公用套件存取的其他案例。

公用版本遭到封鎖

公開的私人套件版本

在此案例中,小組具有公開的私人套件。 在此情況下,會觸發上游行為來封鎖任何新的公用版本(不受信任的套件)。

此圖顯示公開的內部套件版本。

同時擁有私人和公用套件

在此案例中,如果小組使用私人和公用套件的組合,則啟用上游行為會封鎖來自公用登錄的任何新套件版本。

顯示可用私人和公用套件的圖例。

不會封鎖公用版本

所有套件都是私人的*

如果所有現有的套件都是私人套件,而且小組沒有計劃使用任何公用套件,則新的上游行為在此案例中不會影響小組的工作流程。

顯示只包含私人套件之摘要的圖例。

所有套件都是公用的

在此案例中,如果小組完全取用公用套件,無論是從公用登錄或其他開放原始碼存放庫,新的上游行為都不會以任何方式影響其工作流程。

顯示只包含公用套件之摘要的圖例。

公用套件設為私人

在此情況下,當公用套件轉換成私人套件時,新的上游行為不會以任何方式影響小組的工作流程。

此圖顯示從公用轉換為私用的套件。

允許外部版本

注意

您必須是 摘要擁有者 ,才能允許外部來源版本。 如需詳細資訊,請參閱 摘要許可權

  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

  2. 選取 [ 成品],然後從下拉功能表中選取您的摘要。

  3. 選取您的套件,然後選取省略號按鈕以取得更多選項。 選取 [ 允許外部來源版本]。

    顯示如何允許外部來源版本的螢幕快照。

  4. 選取切換按鈕以允許外部版本。 完成時,請選取 [關閉 ]。

    顯示如何啟用外部版本的螢幕快照。

使用 REST API 允許外部版本

使用 PowerShell 允許外部版本

  1. 使用封載>讀取、寫入及管理權限來建立個人存取權杖。

    顯示如何選取封裝許可權的螢幕快照。

  2. 為您的個人存取令牌建立環境變數。

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. 將您的個人存取令牌轉換為 baser64 編碼字串,並建構 HTTP 要求標頭。

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. 建構您的端點 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