Publikování balíčků NuGet pomocí Azure Pipelines (YAML/Classic)
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
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
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 vlastnostname:
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)'
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:
- Přejděte na nastavení>projectu Připojení služby>Nová připojení služby.
- Vyberte NuGet a pak vyberte Další.
- 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.
Publikování na NuGet.org
Vygenerujte klíč rozhraní API.
Přejděte do projektu Azure DevOps a vyberte Nastavení projektu.
Vyberte Service Připojení ions a pak vyberte Nové připojení služby.
Vyberte NuGet a pak vyberte Další.
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.
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 . 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
Související články
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro