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

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

V Azure Pipelines můžete pomocí klasického editoru nebo úloh YAML publikovat balíčky NuGet v rámci kanálu, do informačního kanálu Azure Artifacts nebo do veřejných registrů, jako je nuget.org.

Vytvoření balíčku NuGet

Existují různé způsoby vytvoření balíčků NuGet, jako je použití sady Visual Studio k balení balíčků NuGet. Pokud už k vytvoření balíčků používáte NÁSTROJ MSBuild nebo nějakou jinou úlohu, přeskočte tuto část a přejděte do oddílu publikovat balíčky NuGet.

Pokud chcete vytvořit balíček NuGet, přidejte do souboru YAML kanálu následující fragment kódu. Další informace najdete v tématu Úloha NuGet.

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'
  • packagesToPack: vzor hledání adresářů csproj, které se mají zabalit
  • packDestination: adresář, ve kterém se vytvářejí balíčky

YAML se v TFS nepodporuje.

Správa verzí balíčků

Balíčky NuGet se rozlišují podle jejich názvů a čísel verzí. Použití sémantické správy verzí je doporučenou strategií pro efektivní správu verzí balíčků. Sémantické verze se skládají ze tří číselných komponent: Hlavní, Vedlejší a Patch.

Oprava se po opravě chyby zvýší. Když uvolníte novou zpětně kompatibilní funkci, zvýšíte podverzi a resetujete verzi Patch na 0. Když provedete zpětně nekompatibilní změnu, zvýšíte hlavní verzi a resetujete verzi podverze a opravy na 0.

Pomocí sémantické správy verzí můžete také použít předběžné popisky pro označování balíčků. Uděláte to tak, že zadáte pomlčku následovanou značkou předběžné verze: např. 1.0.0-beta. Sémantická správa verzí je podporována ve službě Azure Pipelines a dá se nakonfigurovat v úloze NuGet následujícím způsobem:

  • Použijte datum a čas (Classic): byPrereleaseNumber (YAML). Verze balíčku je ve formátu Major.Minor.Patch-ci-datetime, kde máte možnost zvolit hodnoty hlavního, vedlejšího a opravy.

  • Použijte proměnnou prostředí (Classic): byEnvVar (YAML). Verze balíčku je nastavena na hodnotu proměnné prostředí, kterou zadáte.

  • Použijte číslo sestavení (Classic): byBuildNumber (YAML). Vaše verze balíčku je nastavená na číslo buildu. Ujistěte se, že jste v možnostech kanálu nastavili formát čísla buildu na $(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)hodnotu . Pokud chcete nastavit formát v YAML, přidejte vlastnost name: v kořenovém adresáři kanálu a přidejte formát.

Následující příklad ukazuje, jak pomocí možnosti správy verzí data a času vygenerovat verzi kompatibilní se SemVer formátovanou 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)'

YAML se v TFS nepodporuje.

Poznámka:

DotNetCore a DotNetStandard balíčky by měly být zabaleny s úlohou DotNetCoreCLI@2 , aby se zabránilo System.InvalidCastExceptions. Další informace najdete v tématu .NET Core CLI – úloha.

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

Publikování balíčků NuGet

Pokud chcete publikovat balíčky do kanálu Azure Artifacts z kanálu, musí mít identita kanálu v informačním kanálu roli Vydavatel informačního kanálu (Přispěvatel ). Další informace najdete v tématu Oprávnění pipelines.

steps:
- task: NuGetAuthenticate@1
  displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    publishVstsFeed: '<projectName>/<feed>'
    allowPackageConflicts: true

Pokud chcete publikovat balíček do externího informačního kanálu NuGet, musíte nejprve vytvořit připojení služby pro připojení k danému informačnímu kanálu. Vytvoření připojení služby:

  1. Přejděte na nastavení>projectu Připojení služby>Nová připojení služby.
  2. Vyberte NuGet a pak vyberte Další.
  3. Vyplňte formulář a po dokončení vyberte Uložit .

Další informace najdete v tématu Správa připojení služeb.

Poznámka:

Úloha NuGetAuthenticate@1 podporuje připojení služby pomocí základního ověřování. Úloha nepodporuje ověřování pomocí klíče rozhraní NuGet API. Pokud vaše připojení služby používá ApiKey, musíte použít úlohu NuGetCommand@2 a v poli argumentů zadat klíč rozhraní API NuGet. Další informace najdete v tématu Úloha NuGet.

Pokud chcete publikovat balíček do externího informačního kanálu NuGet, přidejte do kanálu YAML následující fragment kódu.

Pomocí úlohy příkazovéhořádku (s NuGet.exe):

  - task: NuGetAuthenticate@1
    inputs:
      nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION>

  - script: |
      nuget push <PACKAGE_PATH> -src https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>
    displayName: "Push"          

Použití úlohy příkazovéhořádku (s dotnet):

  - task: NuGetAuthenticate@1
    inputs:
      nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION>

  - script: |
      dotnet build <CSPROJ_PATH> --configuration <CONFIGURATION>
      dotnet pack <CSPROJ_PATH> -p:PackageVersion=<YOUR_PACKAGE_VERSION> --output <OUTPUT_DIRECTORY> --configuration <CONFIGURATION>
      dotnet nuget push <PACKAGE_PATH> --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING>
    displayName: "Build, pack and push"          

Poznámka:

Vyžaduje se ApiKey , ale při odesílání do informačních kanálů Azure Artifacts můžete použít libovolnou hodnotu.

YAML se v TFS nepodporuje.

Publikování na NuGet.org

  1. Vygenerujte klíč rozhraní API.

  2. Přejděte do projektu Azure DevOps a vyberte ikona ozubeného kolaNastavení projektu.

  3. Vyberte Service Připojení ions a pak vyberte Nové připojení služby.

  4. Vyberte NuGet a pak vyberte Další.

  5. Jako metodu ověřování vyberte ApiKey . Pro adresu URL informačního kanálu použijte následující adresu URL: https://api.nuget.org/v3/index.json.

  6. Zadejte klíč apiKey, který jste vygenerovali dříve, a zadejte název připojení služby.

  7. Vyberte Udělit oprávnění pro přístup ke všem kanálům a po dokončení vyberte Uložit . K výběru této možnosti potřebujete roli připojení služby Správa istrator.

Do definice kanálu přidejte následující fragment kódu YAML:

steps:
- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    nuGetFeedType: external
    publishFeedCredentials: nuget.org