Sdílet prostřednictvím


Publikování balíčků NuGet pomocí Azure Pipelines (YAML/Classic)

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Pomocí Azure Pipelines můžete publikovat balíčky NuGet do informačních kanálů Azure Artifacts ve vaší organizaci, v jiných organizacích a do veřejných registrů, jako je nuget.org, pomocí klasických kanálů nebo kanálů YAML. V tomto článku se naučíte:

  • Publikování balíčků do interního informačního kanálu
  • Publikování balíčků do informačního kanálu v jiné organizaci
  • Správa verzí balíčků

Požadavky

Publikování balíčků NuGet do informačního kanálu ve stejné organizaci

Poznámka:

Pokud chcete publikovat balíčky do informačního kanálu pomocí Azure Pipelines, ujistěte se, že identitě buildu kolekce projektů i identitám služby sestavení vašeho projektu mají přiřazenou roli Vydavatel informačního kanálu (Přispěvatel) v nastavení informačního kanálu. Další podrobnosti najdete v tématu Správa oprávnění .

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Kanály a pak vyberte definici kanálu.

  3. Vyberte Upravit a přidejte do kanálu YAML následující fragment kódu.

steps:
- task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
  displayName: 'NuGet Tool Installer'

- task: NuGetAuthenticate@0
  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. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Kanály a pak vyberte definici kanálu.

  3. Vyberte Upravit a přidejte do kanálu YAML následující fragment kódu.

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

Publikování balíčků NuGet do informačního kanálu v jiné organizaci

Pokud chcete publikovat balíčky NuGet do informačního kanálu v jiné organizaci Azure DevOps, musíte nejprve v cílové organizaci vytvořit osobní přístupový token (PAT). Přejděte do organizace, která je hostitelem cílového informačního kanálu, a vytvořte osobní přístupový token s oborem čtení a zápisu balíčku>. Po vytvoření pat ho zkopírujte a uložte do zabezpečeného umístění, protože ho budete potřebovat v následující části k nastavení připojení služby.

  1. Přihlaste se k organizaci Azure DevOps, ve které se kanál spustí, a přejděte do svého projektu.

  2. Přejděte na připojení služby Project Settings>Service.

  3. Vyberte Nové připojení služby, vyberte NuGet a pak vyberte Další.

  4. Jako metodu ověřování vyberte externí Azure DevOps Server a zadejte adresu URL cílového kanálu. Vložte token PAT, který jste vytvořili dříve, zadejte název připojení služby a zkontrolujte udělení oprávnění k přístupu všem kanálům, pokud je to možné pro váš scénář.

  5. Až budete hotovi, zvolte tlačítko Uložit.

    Snímek obrazovky znázorňující, jak nastavit připojení služby NuGet k ověření pomocí externího informačního kanálu v jiné organizaci

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Kanály a pak vyberte definici kanálu.

  3. Vyberte Upravit a přidejte do kanálu YAML následující fragment kódu.

    - 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. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Kanály a pak vyberte definici kanálu.

  3. Vyberte Upravit a přidejte do kanálu YAML následující fragment kódu.

    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@0
      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          
    

Snímek obrazovky zobrazující úspěšně publikovaný balíček do informačního kanálu v jiné organizaci

Správa verzí balíčku úloh NuGet

Azure Pipelines podporuje sémantickou správu verzí a poskytuje následující možnosti konfigurace pro úlohy NuGet:

  • Použití data a času (Classic) | byPrereleaseNumber (YAML): Vaše verze balíčku bude mít následující formát: Major.Minor.Patch-ci-datetime , kde máte flexibilitu přizpůsobit hodnoty Hlavní, Vedlejší a Patch.

  • Použití proměnné prostředí (Classic) | byEnvVar (YAML): Vaše verze balíčku je nastavena na hodnotu zadané proměnné prostředí.

  • Použití čísla buildu (Classic) | byBuildNumber (YAML): Verze balíčku je nastavená na číslo sestavení. Ujistěte se, že v možnostech kanálu definujete formát čísla sestavení jako $(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r). Pokud chcete zadat formát v YAML, přidejte name: do kořenového adresáře kanálu vlastnost a definujte formát.

Následuje příklad ukazující použití správy verzí data a času k vygenerování balíčku kompatibilního s SemVer formátovaným takto: Major.Minor.Patch-ci-datetime.

variables:
  Major: '1'
  Minor: '0'
  Patch: '0'

steps:
- task: NuGetCommand@2
  inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'

Poznámka:

DotNetCore a DotNetStandard balíčky by měly být zabaleny s úlohou DotNetCoreCLI@2 , aby se zabránilo System.InvalidCastExceptions. Další podrobnosti najdete v úloze rozhraní příkazového řádku .NET Core.

task: DotNetCoreCLI@2
inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'