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 pomocí klasických kanálů nebo kanálů YAML publikovat balíčky NuGet do informačního kanálu Azure Artifacts, externích kanálů nebo veřejných registrů, jako jsou nuget.org. V tomto článku se dozvíte, jak:

  • Generování balíčku NuGet v Azure Pipelines
  • Publikování balíčků do interních a externích informačních kanálů
  • Publikování balíčků do NuGet.org

Požadavky

Vytvoření balíčku NuGet

Balíčky NuGet můžete vytvořit několika způsoby, například pomocí dotnetu nebo nuget.exe rozhraní příkazového řádku k zabalení balíčků. Pokud už k vytváření balíčků používáte NÁSTROJ MSBuild nebo jiné úlohy, můžete tuto část přeskočit a přejít k další.

Pokud chcete vytvořit balíček NuGet, přidejte do souboru YAML následující fragment kódu. Další podrobnosti najdete v úloze NuGet.

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'
  • packagesToPack: vzor, který úloha používá k vyhledání adresářů csproj, které se mají zabalit.
  • packDestination: adresář, kde se vytvářejí balíčky. Pokud jsou prázdné, balíčky se vytvoří ve zdrojovém kořenovém adresáři.

Správa verzí balíčků

Balíčky NuGet jsou definovány jejich názvy a čísly verzí. Použití sémantické správy verzí je doporučeným přístupem pro efektivní správu verzí balíčků. Sémantické verze se skládají ze tří číselných komponent: hlavní, podverze a oprava.

Číslo opravy se po opravě chyby zvýší. Při vydání nové zpětně kompatibilní funkce zvýšíte podverzi a resetujete verzi Patch na hodnotu 0. Naopak při provádění zpětně nekompatibilní změny zvýšíte hlavní verzi a resetujete podverzi i verzi Patch na hodnotu 0.

Sémantická správa verzí také podporuje použití předběžných popisků k označování balíčků. Jednoduše připojte pomlčku následovanou vaší značkou předběžné verze, například: 1.0.0-beta.

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

  • Použití data a času (Classic) | byPrereleaseNumber (YAML): Verze balíčku se řídí formátem: 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íže je příklad ukazující, jak použít správu 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)'

Publikování balíčků do interních informačních kanálů

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í .

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

Publikování balíčků do externích informačních kanálů

Pokud chcete publikovat balíčky do externích informačních kanálů NuGet nebo veřejných registrů, jako jsou informační kanály v jiných organizacích Azure DevOps nebo nuget.org, musíte nejprve vytvořit připojení služby pro ověření v příslušné službě:

  1. V projektu Azure DevOps přejděte na připojení služby Project Settings>Service.>

  2. Vyberte Nové připojení>služby NuGet>Next.

  3. Vyplňte požadovaná pole a po dokončení vyberte Uložit . Další podrobnosti najdete v tématu Správa připojení služeb.

Poznámka:

Úloha NuGetAuthenticate@1 podporuje připojení služeb se základním ověřováním, ale nepodporuje ověřování apikey. Pokud chcete použít ověřování ApiKey, musíte místo toho použít NuGetCommand@2 úlohu .

Pokud chcete publikovat balíčky NuGet do informačního kanálu v jiné organizaci, přidejte do kanálu YAML následující fragment kódu:

  • Pomocí úlohy příkazového řádku a 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 a 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 publikování do informačního kanálu Azure Artifacts můžete použít libovolný řetězec.

Publikování na NuGet.org

  1. Přihlaste se ke svému účtu nuget.org a 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 a jako 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 . Upozorňujeme, že k výběru této možnosti potřebujete roli připojení služby Správa istrator.

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