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
Organizace Azure DevOps. Vytvořte si ho zdarma.
Projekt Azure DevOps. Pokud ho ještě nemáte, vytvořte nový projekt .
Informační kanál Azure Artifacts Vytvořte si ho zdarma.
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řidejtename:
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ě:
V projektu Azure DevOps přejděte na připojení služby Project Settings>Service.>
Vyberte Nové připojení>služby NuGet>Next.
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
Přihlaste se ke svému účtu nuget.org a vygenerujte klíč rozhraní API.
Přejděte do projektu Azure DevOps a vyberte
Nastavení projektu.
Vyberte Připojení služeb a pak vyberte Nové připojení služby.
Vyberte NuGet a pak vyberte Další.
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.
Zadejte klíč apiKey, který jste vygenerovali dříve, a zadejte název připojení služby.
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 Správce připojení služby.
steps:
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: nuget.org