共用方式為


使用 Azure Pipelines 發佈 NuGet 套件 (YAML/傳統)

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022

Azure Pipelines 讓開發者能夠將套件發佈到組織內的 Azure Artifacts feed、其他組織的 feed,以及像 nuget.org 這樣的公開登錄檔。本文說明如何利用 Classic 與 YAML 管線將 NuGet 套件發佈到內部與外部的串流。

必要條件

產品 要求
Azure DevOps - Azure DevOps 組織和專案
- Azure Artifacts 資料饋送
- 如果你使用自架代理程式,請確保安裝了 .NET Core SDKNuGet
- 權限:
    - 若要授與專案中所有管線的存取權,您必須是 Project Administrators 群組的成員,
    - 若要建立服務連線,您必須具有 系統管理員創建者 角色,針對 服務連線

注意

如果你使用 Ubuntu 24.04 或更新版本,必須用 NuGetAuthenticate 來執行任務,而不是用nuget.exe。 如需詳細資訊,請參閱 支援更新版本的 Ubuntu 虛擬映像

將 NuGet 套件發佈至相同組織中的摘要

如果你還沒有訂閱源,可以建立 新的,否則請依照以下步驟將你的 NuGet 套件發佈到同一組織內的訂閱源:

  1. 登入你的 Azure DevOps,然後導覽到你的專案。

  2. 選擇 「管線」,然後選擇你的管線定義。

  3. 選擇 編輯,然後將以下片段加入你的 YAML 管線,以驗證並發佈你的套件:

    steps:
    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1                            # Authenticate with Azure Artifacts and other NuGet registries.
      displayName: 'NuGet Authenticate'
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push
    
  1. 登入你的 Azure DevOps,然後導覽到你的專案。

  2. 選擇 「管線」,然後選擇你的管線定義。

  3. 選擇 編輯,然後將以下片段加入你的 YAML 管線,以驗證並發佈你的套件:

    steps:
    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1
      displayName: 'NuGet Authenticate'
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push
    

注意

要使用 Azure Pipelines 發佈套件到串流,請確保專案 集合建置服務(Project Collection Build Service )及你專案的 建置服務 身份在你的導覽設定中都指定了 「饋源發佈者(貢獻者) 」角色。 如需詳細資訊,請參閱 管理許可權

將 NuGet 套件發佈至另一個組織中的摘要

要將你的 NuGet 套件發佈到不同的 Azure DevOps 組織中的一個資料流,你必須先在目標組織建立個人存取權杖(PAT),然後在你管線運行的組織內建立服務連線。 接著你可以利用 YAML 或 Classic 管線中的服務連線來驗證並發佈你的套件。

1. 建立個人存取令牌

  1. 登入托管你目標訂閱源的 Azure DevOps 組織。

  2. 請前往 使用者設定>個人存取令牌

  3. 選擇新的 Token,提供描述性名稱,然後在範圍中選擇封裝>讀取和寫入

  4. 完成後選擇 建立 ,然後複製並儲存你的 PAT 到安全位置,因為接下來設定服務連線時會需要它。

2. 建立服務連結

  1. 登入到將執行您的管線的 Azure DevOps 組織,然後導覽至您的專案。

  2. 流覽至您的項目設定>服務連線。

  3. 選取 [ 新增服務連線],選取 [NuGet],然後選取 [ 下一步]。

  4. 選取 [外部 Azure DevOps Server ] 作為 [驗證] 方法,然後輸入您的目標 摘要 URL。 貼上 您稍早建立的個人存取令牌 、為您的服務連線提供名稱,並在適用於您的案例時檢查 [授與所有管線 的訪問許可權]。

  5. 當完成時,選擇儲存

    此螢幕快照顯示如何設定 NuGet 服務連線,以在不同的組織中向外部摘要進行驗證。

3. 發佈你的包裹

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

  2. 選取 [ 管線],然後選取您的管線定義。

  3. 選擇 編輯,然後將以下片段加入你的 YAML 管線,以驗證並發佈你的套件:

    - task: NuGetToolInstaller@1                                # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push       
    
  1. 登入您的 Azure DevOps 組織,然後瀏覽至您的專案。

  2. 選取 [ 管線],然後選取您的管線定義。

  3. 選取 [ 編輯],然後將下列代碼段新增至您的 YAML 管線。

    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1                            # Authenticate with Azure Artifacts and other NuGet registries.
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>        # Name of the service connection used to authenticate with feeds across organizations or public registries.
    
    - script: |
        nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push          
    

螢幕快照,顯示封裝已成功發佈至不同組織中的摘要。