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
Pokud jste to ještě neudělali, vytvořte organizaci Azure DevOps a projekt.
Pokud ho ještě nemáte, vytvořte nový informační kanál .
Pokud používáte agenta v místním prostředí, ujistěte se, že má nainstalovanou sadu .NET Core SDK (2.1.400+) a NuGet (4.8.0.5385+).
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í .
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Kanály a pak vyberte definici kanálu.
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
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Kanály a pak vyberte definici kanálu.
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.
Přihlaste se k organizaci Azure DevOps, ve které se kanál spustí, a přejděte do svého projektu.
Přejděte na připojení služby Project Settings>Service.
Vyberte Nové připojení služby, vyberte NuGet a pak vyberte Další.
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ář.
Až budete hotovi, zvolte tlačítko Uložit.
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Kanály a pak vyberte definici kanálu.
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
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Kanály a pak vyberte definici kanálu.
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
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řidejtename:
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)'